Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 점(.) 앞의 문자열을 대체하는 쿼리 작성법

MySQL에서 문자열 중 점(.) 앞부분만 다른 값으로 대체하고 싶다면 CONCAT() 함수와 SUBSTRING_INDEX() 함수를 함께 사용하면 됩니다. 이 두 함수를 조합하면 점 뒤의 소수점 이하 값은 그대로 유지한 채, 점 앞의 정수 부분만 원하는 값으로 손쉽게 변경할 수 있습니다.

1. 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다.

mysql> create table DemoTable1424
    -> (
    -> Value varchar(60)
    -> );
Query OK, 0 rows affected (0.56 sec)

2. 샘플 데이터 삽입하기

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable1424 values('567.78483733');
Query OK, 1 row affected (0.78 sec)
mysql> insert into DemoTable1424 values('1023.45252443');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1424 values('7893322.5635543434');
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable1424 values('90944.665665');
Query OK, 1 row affected (0.14 sec)

3. 현재 데이터 확인하기

SELECT 문으로 저장된 전체 레코드를 조회합니다.

mysql> select * from DemoTable1424;

위 쿼리는 아래와 같은 결과를 출력합니다.

+--------------------+
| Value             |
+--------------------+
| 567.78483733       |
| 1023.45252443      |
| 7893322.5635543434 |
| 90944.665665       |
+--------------------+
4 rows in set (0.00 sec)

4. 점 앞의 문자열 대체하기

핵심은 UPDATE 문입니다. SUBSTRING_INDEX(Value, '.', -1)은 점(.)을 기준으로 뒤쪽(-1)에 위치한 부분, 즉 소수점 이하 값을 추출합니다. 여기에 CONCAT()으로 새로운 접두사 '10000.'을 붙여주면 점 앞부분만 대체됩니다.

mysql> update DemoTable1424
    -> set Value=concat('10000.',substring_index(Value ,'.',-1));
Query OK, 4 rows affected (0.13 sec)
Rows matched: 4  Changed: 4 Warnings: 0

5. 변경 결과 확인하기

테이블을 다시 조회해 업데이트가 정상적으로 적용되었는지 확인합니다.

mysql> select * from DemoTable1424;

모든 행에서 점 앞의 값이 '10000'으로 바뀌고, 점 뒤의 기존 값은 그대로 유지된 것을 확인할 수 있습니다.

+------------------+
| Value           |
+------------------+
| 10000.78483733   |
| 10000.45252443   |
| 10000.5635543434 |
| 10000.665665     |
+------------------+
4 rows in set (0.00 sec)

정리

SUBSTRING_INDEX(컬럼명, '.', -1)은 구분자를 기준으로 오른쪽 끝 값을 반환하고, 양수를 지정하면 왼쪽 값을 반환합니다. 이를 CONCAT()과 조합하면 특정 구분자 앞이나 뒤의 문자열만 자유롭게 치환할 수 있어, 숫자 포맷 일괄 변경이나 데이터 정제 작업에 매우 유용하게 활용할 수 있습니다.