| a |
| 1400 |
| 132 |
| 0.12 |
| 1420.1356 |
| -1340 |
| -3.1354 |
| -1320.23 |
example table 입니다..
| a |
| 1,400 |
| 132 |
| 0.12 |
| 1,420.1356 |
| -1,340 |
| -3.1354 |
| -1,320.23 |
mysql 공부 중인 sql 초보자입니다.. 맨 위 테이블을 아래처럼 소수점 아래자리 숫자는 그대로 하면서, 숫자 3자리마다 , 를 넣고 싶은데(음수도 마찬가지입니다),
1400같은 숫자는 할 수 있겠는데, 정수 데이터만 있는 테이블이 아니라서, 다른 데이터들을 어떻게 바꿔야할지 모르겠습니다...
format 함수를 사용하시면 될것같네요..
WITH t AS
(
SELECT '1400' v
UNION ALL SELECT '132'
UNION ALL SELECT '0.12'
UNION ALL SELECT '1420.1356'
UNION ALL SELECT '-1340'
UNION ALL SELECT '-3.1354'
UNION ALL SELECT '-1320.23'
)
SELECT v
, TRIM(TRAILING '.' FROM -- 오른쪽 . 제거
TRIM(TRAILING '0' FROM -- 오른쪽 0 제거
FORMAT(v, 5) -- 3자리 컴마 및 소수점 5자리 채우기
)) x
FROM t
;
-- 5.7 이하 버전
SELECT
str,
CASE
WHEN str REGEXP '^-?[0-9]+(\\.[0-9]+)?$' THEN concat(format(CAST(str AS signed), 0), substring(str, instr(str, '.')))
ELSE str
END as cast_str
FROM
(
SELECT 'a2' AS str UNION ALL
SELECT '2a' AS str UNION ALL
SELECT '123.4.123' AS str UNION ALL
SELECT '1234.' AS str UNION ALL
SELECT '1' AS str UNION ALL
SELECT '1000' AS str UNION ALL
SELECT '0.1234' AS str UNION ALL
SELECT '1234.56' AS str UNION ALL
SELECT '-1234.00' AS str
) a;