database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 7046 게시물 읽기
No. 7046
대입을 해서 한번에 값을 얻을수 있을까요?
작성자
김우성(babokws)
작성일
2017-04-11 00:43
조회수
2,864

a=10 A=36 공백=E

b=11 B=37 !=0F

c=12 C=38 ?=3Y

d=13 D=39 .=4Q

e=14 E=40 ^=6g

f=15 F=41

g=16 G=42

h=17 H=43

i=18 I=44

j=19 J=45

k=20 K=46

l=21 L=47

m=22 M=48

n=23 N=49

o=24 O=50

p=25 P=51

q=26 Q=52

r=27 R=53

s=28 S=54

t=29 T=55

u=30 U=56

v=31 V=57

w=32 W=58

x=33 X=59

y=34 Y=60

z=35 Z=61

 

4318EOFE5824302113E342430E21182014E28242214E122415151414E3Y4Q4Q4QE6g6g

대입하면

Hi ! Would you like some coffee ? … ^^

이렇게 나옵니다

 

SELECT COLUMN = REPLACE(REPLACE......

, * FROM TABLE;

 

대입을 해서 한번에 값을 얻을수 있을까요?

이 글에 대한 댓글이 총 5건 있습니다.

Function 하나 만드시구

Function 내에서 문자치환후 char 값 리턴하게끔 하시면 되겠네요..

 

Select dbo.펑션명('치환하고자 하는 문자열')

 

 

 

최한영(terry0515)님이 2017-04-11 16:09에 작성한 댓글입니다.

CREATE FUNCTION FUNCTIONS ( @CHANGE VARCHAR(40) )

RETURNS VARCHAR(40)

AS

BEGIN

DECLARE @CHANGE2 VARCHAR(40);

 

IF @CHANGE = 'E' SET @CHANGE2 = '';

ELSE IF @CHANGE = '0F' SET @CHANGE2 = '0';

ELSE IF @CHANGE = '10' SET @CHANGE2 = 'a';

ELSE IF @CHANGE = '12' SET @CHANGE2 = 'c';

ELSE IF @CHANGE = '13' SET @CHANGE2 = 'd';

ELSE IF @CHANGE = '27' SET @CHANGE2 = 'r';

RETURN @CHANGE2;

END;

 

-- FUNCTION 을 만들고 실행해보면

-- 원본 = "E12102713" -> " card" 이렇게나와야되는데

-- 실제로는 " 12102713" 으로 첫번째문자열만 치환이 제대로 되었고 나머지는-- 잘못 치환이 됐어요 어떻게 해야되나요

 

SELECT dbo.FUNCTIONS(SUBSTRING(COLUMN,1,1))

+ SUBSTRING(COLUMN,2,2)

+ SUBSTRING(COLUMN,4,2)

+ SUBSTRING(COLUMN,6,2)

+ SUBSTRING(COLUMN,8,2)

FROM TABLE;

김우성(babokws)님이 2017-04-13 01:17에 작성한 댓글입니다.
이 댓글은 2017-04-13 01:20에 마지막으로 수정되었습니다.

SELECT dbo.FUNCTIONS(SUBSTRING(COLUMN,1,1))

+ SUBSTRING(COLUMN,2,2)

+ SUBSTRING(COLUMN,4,2)

+ SUBSTRING(COLUMN,6,2)

+ SUBSTRING(COLUMN,8,2)

FROM TABLE;

 

첫번째 문자만 펑션콜을 했고..

나머지 문자들은 단순히 자르는 것만 하셨네요..

 

하기처럼 바꿔서 해보시면 될겁니다.

 

그럼 수고하세요..

 

 

SELECT dbo.FUNCTIONS(SUBSTRING(COLUMN,1,1))

+ dbo.FUNCTIONS(SUBSTRING(COLUMN,2,2))

+ dbo.FUNCTIONS(SUBSTRING(COLUMN,4,2))

+ dbo.FUNCTIONS(SUBSTRING(COLUMN,6,2))

+ dbo.FUNCTIONS(SUBSTRING(COLUMN,8,2))

FROM TABLE;

 

최한영(terry0515)님이 2017-04-13 11:34에 작성한 댓글입니다.

글자를 잘라서 함수 태우지 마시고

전체 글자로 함수 태우시고

함수 안에서 루프 돌려가면서 잘라서 처리하신후 붙여서 리턴하세요.

마농(manon94)님이 2017-04-13 17:33에 작성한 댓글입니다.

앗! 저게 눈에 안보이다니...

최한영(terry0515)님, 마농(manon94)님께 감사드립니다.

 

그런데요 전체 자리수가 위함수로는 8자리 초과된것들은 NULL 을 표시합니다

전체 자리수가 0 ~ 50 자리수가 있는데요 각각 자리수가 달라서요

어떻게 해야되죠...

 

예)

10111315181918171414141515

171414141515

1918171414141515

 

1011

 

김우성님이 2017-04-14 18:28에 작성한 댓글입니다.
이 댓글은 2017-04-14 19:01에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7049Merge문 질문입니다.
남현진
2017-04-25
2742
7048계정 권한 질문
이경민
2017-04-18
2567
7047동적으로 생성된 COLUMN 들을 합칠수있나요? [4]
김우성
2017-04-17
2813
7046대입을 해서 한번에 값을 얻을수 있을까요? [5]
김우성
2017-04-11
2864
7045[질문]dbcc tranceon Flag 관련
김상원
2017-04-07
2794
7044높은값 가까운수, 낮은값 가까운수 찾기 [1]
둥둥이
2017-03-29
2786
7043접수일자 완료일자에서 복구된 소요시간을 구할려고합니다. [1]
차진호
2017-03-29
2598
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.046초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다