복붙노트

[SQL] 열에서 MySQL의 일부 값 앞에 0을 추가

SQL

열에서 MySQL의 일부 값 앞에 0을 추가

나는 CSV 나에게 보낸 CSV 파일이 있습니다. 관심 분야는 8 자리입니다. 0 필드 시작 그 중 일부는 숫자를 보냈습니다. 그래서, 지금 몇 앞에 0을 떨어졌다.

이미 VARCHAR에 필드를 변환. 지금은이 작업을 수행해야합니다

나는 이제이 있습니다 :

12345678
1234567

나는이 있어야합니다 :

12345678
01234567

해결법

  1. ==============================

    1.숫자에 필드 등을 변경하고 0을 유지하기 위해 ZEROFILL을 사용하여

    숫자에 필드 등을 변경하고 0을 유지하기 위해 ZEROFILL을 사용하여

    또는

    사용 LPAD ()

    SELECT LPAD('1234567', 8, '0');
    
  2. ==============================

    2.혹시:

    혹시:

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

    mylesg에서, 아래의 의견에 질문에 대한 응답으로 편집 :

    난 당신이 쿼리 비슷한에 사용한다고 가정하고 있습니다 :

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

    그 성공했지만 테이블의 값이 리딩 제로없이 여전히 인 경우에, 나는 당신이 아마 숫자 유형으로 열을 설정 좋을 것? 그런 경우 당신은 열이 선행 0을 유지하기 위해 텍스트 / VARCHAR () 형이되도록 테이블을 변경해야 할 것입니다 :

    먼저:

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

    둘째, 업데이트를 실행 :

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

    이 후, 최고의-제로를 유지해야한다; 아래 측 열이 더 엄격 숫자 타입 없다는 것이다; 좀 더 엄격한 검증을 시행 할 수 있습니다, 그래서 그 이외의 숫자는 해당 컬럼에 입력되지 않도록 (귀하의 사용 사례에 따라).

    참고 :

  3. ==============================

    3.MySQL 데이터베이스에 엑셀에서 전화 번호 데이터를 가져올 때 나는 비슷한 문제가 있었다. 필요없이 간단한 트릭이 전화 번호의 길이를 식별 할 수 있도록 (때문에 내 데이터에 변경 전화 번호의 길이) :

    MySQL 데이터베이스에 엑셀에서 전화 번호 데이터를 가져올 때 나는 비슷한 문제가 있었다. 필요없이 간단한 트릭이 전화 번호의 길이를 식별 할 수 있도록 (때문에 내 데이터에 변경 전화 번호의 길이) :

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

    난 그냥 전화 번호 앞에 0을 CONCAT.

  4. from https://stackoverflow.com/questions/11165104/adding-a-leading-zero-to-some-values-in-column-in-mysql by cc-by-sa and MIT license