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
'IT박스' 카테고리의 다른 글
| C # 클래스 라이브러리를 디자인 할 때 인터페이스에 대한 상속을 언제 선택해야합니까? (0) | 2020.11.13 |
|---|---|
| 테이블의 기본 키를 얻는 방법은 무엇입니까? (0) | 2020.11.13 |
| Java Enum 반환 Int (0) | 2020.11.13 |
| ng-cloak 지시문을 올바르게 사용하는 방법은 무엇입니까? (0) | 2020.11.13 |
| Elixir 변수는 정말 불변입니까? (0) | 2020.11.13 |