Python을 사용하고 컬럼에서 09를 선택하기 위해 SELECT 문을 MYSQL에 수행 할 때 0은 삭제되고 9 만 인쇄됩니다.파이썬 - MYSQL - 선행 0 선택
앞에 오는 0을 포함하여 모든 숫자를 가져 오는 방법이 있습니까?
Python을 사용하고 컬럼에서 09를 선택하기 위해 SELECT 문을 MYSQL에 수행 할 때 0은 삭제되고 9 만 인쇄됩니다.파이썬 - MYSQL - 선행 0 선택
앞에 오는 0을 포함하여 모든 숫자를 가져 오는 방법이 있습니까?
질의, 테이블 정의 또는 열이 숫자라고 생각하고 결과를 정수로 변환하는 사용중인 ORM에는 거의 확실한 것이 있습니다. 선행 0을 보존하려면 열을 문자열 (모든 곳!)로 정의해야합니다.
편집 : 서버의 ZEROFILL
은 잘라내지 않습니다. 파이썬은 정수형 컬럼을 파이썬 정수로 취급하며, 그것들은 앞에 오는 0을 가지지 않는다. 열 유형을 VARCHAR
으로 변경하거나 Python에서 "%02d" % val
과 같은 것을 사용하거나 CAST(my_column AS VARCHAR)
을 쿼리에 넣어야합니다.
열의 데이터 유형은 무엇입니까? 앞에 오는 0을 유지하려면 VARCHAR
과 같은 숫자가 아닌 열 유형을 사용해야합니다.
>>> print "%02d" % (1,)
01
열 유형은 tinyint입니다. PHP를 사용하여 테이블에서 선택하면 앞에 0이 표시됩니다. –
PHP 버그처럼 들립니다. 숫자 앞에 0이 없어야합니다. –
MySQL은 열 정의에서이 작업을 지원합니다 : 당신은을 통해 해당 컬럼에 각 쿼리를 실행할 수
CREATE TABLE MyTable (
i TINYINT(2) ZEROFILL
);
INSERT INTO MyTable (i) VALUES (9);
SELECT * FROM MyTable;
+------+
| i |
+------+
| 09 |
+------+
예. 선행 제로는 테이블에 있지만 파이썬의 select 및 print 문에는 없습니다. –
파이썬에서 0이 붙는 형식 번호를
, 형식 지정자를 사용 다음과 같은 함수 :
if len(str(number)) == 1: number = "0" + str(number)
이렇게하면 숫자가 문자열로 캐스트되지만 알아요, 파이썬은 숫자 데이터 타입에서 선행 0을 허용하지 않습니다. 내가 틀렸다면 누군가가 나를 바로 잡습니다.
편집 : John Millikin의 대답은 이것과 똑같은 일을하지만 더 효율적입니다. 형식 지정자에 대해 가르쳐 주셔서 감사합니다!
최선의 선택은 Eevee
에 의해 제안 CAST
를 사용하는 것입니다하지만 당신은이 게시물에
컬럼의 데이터 유형은 무엇인가에 주어진
varchar
이 문제가있다 주조로CAST (ur_field AS CHAR(2))
을 사용할 수 있나요? 텍스트 열 (varchar) 또는 실제 숫자 열 (정수, 소수점, ...)입니까? 값이 어떻게 출력되는지에 관한 문제라면 * "% 04d"% (value_of_column,) * – Dirk과 같은 Python의 * % * 연산자를 사용할 수 있습니다. 열 유형은 tinyint입니다. PHP를 사용하여 테이블에서 선택하는 경우 제로가됩니다. –