티스토리 뷰
등락률을 문자열(부호 포함 전체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(jnilydrate, 2),'.',''),
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'))