티스토리 뷰

등락률을 문자열(부호 포함 전체6자리, 소수점이하2자리) 스트림으로 바꾸기

-1.3:-000013
-1.35:-000135
1.3:000013
1.35:000135

 

concat(a, b, c, ...) : a, b, c 를 연결한다. (C++ 의 + 연산자)
truncate(-4.3*100,0) : 소수점 이하 버림, 두번째 인자가 소수점 자리수로 2이면 소수점이하 2자리로 만든다.

 

 

1
2
select concat(left(replace(concat('000000', truncate(-4.3*100,0)),'000000-','-000000'),1),
right(replace(concat('000000', truncate(-4.3*100,0)),'000000-','-000000'),5))
cs

아래것 보다 이것이 다 간단한듯....
1행은 한자리 부호처리, 2행은 5자리의 숫자부분. -4.35를 -00435 로 만듬.
1행 분석 : '000000' 을  패턴 A라 생각한다. truncate()는 -430 이 되고, concat()로 A-430, replace()로 -A430 이 된다. 이것을 left()로 '-' 를 얻음. (만약, 양수이면 '0' 이 됨)
2행 분석 : truncate() 값이 -430, concat()로 A-430, replace()로 -A430, right()로 A일부 '00'과 '430'을 연결한 '00430' 이 된다.
1행의 select 다음에 오는 concat() 로 1행에서 얻은 '-' 와 2행에서 얻은 '00430' 를 연결한 -00430 결과값을 얻는다.

 

1
select jnilydrate from stock.tblyk3_ys3;
cs

 

 

체결강도 처럼 9.2 포맷인 경우 (전체9자리, 소수점이라 2자리) 인 경우  5행 값을 8, 11행 값을 9로 바꾸고 jnilydrate 컬럼이름(1, 4, 10행)도 바꾼다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT IF(jnilydrate < 0
    concat('-' , 
            lpad(
                replace(format(abs(jnilydrate), 2), '.',''),
                5,
                '0'
            )
    ),
    lpad(
        replace(format(jnilydrate2),'.',''), 
    6,
 '0')
    )
    from stock.tblyk3_ys3;
cs

1
IF(jnilydrate < 0,concat('-',lpad(replace(format(abs(jnilydrate), 2), '.',''),5,'0')),lpad(replace(format(jnilydrate, 2),'.',''),6,'0'))
cs

 

IF(jnilydrate < 0,concat('-',lpad(replace(format(abs(jnilydrate), 2), '.',''),5,'0')),lpad(replace(format(jnilydrate, 2),'.',''),6,'0'))
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30