mysql 숫자 3자리마다 , 질문드립니다 0 3 716

by 메밀묵도토리묵 [SQL Query] mariadb dbeaver [2022.07.13 14:49:23]


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같은 숫자는 할 수 있겠는데, 정수 데이터만 있는 테이블이 아니라서, 다른 데이터들을 어떻게 바꿔야할지 모르겠습니다...

 

by pajama [2022.07.13 15:39:42]

format 함수를 사용하시면 될것같네요..


by 마농 [2022.07.13 16:02:37]
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
;

 


by 신이만든지기 [2022.07.13 16:42:00]
-- 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;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입