IT박스

MySQL의 열에있는 일부 값에 선행 0 추가

itboxs 2020. 11. 13. 07:57
반응형

MySQL의 열에있는 일부 값에 선행 0 추가


CSV 파일이 CSV로 전송되었습니다. 관심 분야는 8 자리입니다. 일부는 0으로 시작합니다. 필드는 숫자로 전송되었습니다. 그래서 나는 이제 몇 가지 선행 0을 삭제했습니다.

이미 필드를 varchar로 변환했습니다. 이제이 작업을 수행해야합니다.

나는 지금 이것을 가지고있다 :

12345678
1234567

나는 이것을 필요로한다 :

12345678
01234567

필드를 다시 숫자로 변경하고 ZEROFILL0을 유지하는 데 사용 합니다.

또는

사용하다 LPAD()

SELECT LPAD('1234567', 8, '0');

혹시:

select lpad(column, 8, 0) from table;

아래 의견에 mylesg의 질문에 대한 답변으로 편집 되었습니다.

좋아, 쿼리를 변경하는 것 같지만 테이블에 영구적으로 고정 (변경)하려면 어떻게해야합니까? SELECT 대신 UPDATE를 시도했습니다.

다음과 유사한 쿼리를 사용했다고 가정합니다.

UPDATE table SET columnName=lpad(nums,8,0);

성공했지만 테이블의 값에 여전히 선행 0이 없으면 열을 숫자 유형으로 설정하는 것이 좋습니다. 이 경우 선행 0을 유지하기 위해 열이 text / varchar () 유형이되도록 테이블을 변경해야합니다.

먼저:

ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8);

둘째, 업데이트를 실행합니다.

UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0');

그러면 선행 0을 유지해야합니다. 단점은 열이 더 이상 엄격하게 숫자 유형이 아니라는 것입니다. 따라서 해당 열에 숫자가 아닌 항목이 입력되지 않도록하기 위해 사용 사례에 따라 더 엄격한 유효성 검사를 시행해야 할 수 있습니다.

참조 :


Excel에서 mysql 데이터베이스로 전화 번호 데이터를 가져올 때 비슷한 문제가 발생했습니다. 따라서 전화 번호의 길이를 식별 할 필요가없는 간단한 트릭입니다 (전화 번호의 길이가 데이터에서 다양하기 때문).

UPDATE table SET phone_num = concat('0', phone_num) 

방금 0을 phone_num.

참고 URL : https://stackoverflow.com/questions/11165104/adding-a-leading-zero-to-some-values-in-column-in-mysql

반응형