열이 부호가 없는지 확인하는 방법은 무엇입니까?
-
11-12-2019 - |
문제
현재 특정 테이블의 모든 열을 나열하고 각 열이 서명되지 않았는지 확인하려고 합니다.
다음은 내 테스트 픽스처의 예입니다.
CREATE TABLE ttypes
(
cbiginteger BIGINT UNSIGNED,
cinteger INT UNSIGNED,
csmallinteger SMALLINT UNSIGNED
) ENGINE = InnoDB;
특정 테이블의 모든 열을 나열하기 위해 두 가지 가능성을 발견했습니다.
SHOW FULL COLUMNS
FROM ttypes;
에 따르면 선적 서류 비치, 이 쿼리는 다음 필드를 반환합니다.필드, 유형, Null, 기본값, 추가 및 설명.그 중 어느 것도 열이 서명되지 않았는지 여부를 결정할 수 없습니다.
그 이후에 보니 information_schema.columns
이는 에서 사용하는 기본 테이블입니다. SHOW COLUMNS
질문.
SELECT ...
FROM information_schema.columns
WHERE table_name = 'ttypes';
불행하게도 결과 필드 중 어느 것도 열이 서명되지 않았는지 여부를 확인할 수 없습니다.
해결책
내가 아는 한, 해당 속성이 저장되는 유일한 장소는 COLUMN_TYPE
~에 INFORMATION_SCHEMA.COLUMNS
.
이는 다음의 출력에 포함되어야 합니다. SHOW COLUMNS
(이내에 Type
):
mysql> show columns from ttypes;
+---------------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------------+------+-----+---------+-------+
| cbiginteger | bigint(20) unsigned | YES | | NULL | |
| cinteger | int(10) unsigned | YES | | NULL | |
| csmallinteger | smallint(5) unsigned | YES | | NULL | |
+---------------+----------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
불행하게도 당신은 Type
그리고 찾아 unsigned
, 또는 아닙니다 unsigned
거기에는 서명된 열에 아무것도 넣지 않습니다.
다른 팁
이 마술을 시도하십시오 :
select COLUMN_NAME,
COLUMN_TYPE,
IS_NULLABLE,
IF(COLUMN_TYPE LIKE '%unsigned', 'YES', 'NO') as IS_UNSIGNED
from information_schema.COLUMNS where TABLE_NAME='record1'
.
출력
COLUMN_NAME COLUMN_TYPE IS_NULLABLE IS_UNSIGNED
----------- ---------------- ----------- -----------
id int(10) unsigned NO YES
recordID varchar(255) YES NO
. 테이블의 모든 변수의 유형을 결정하려면 다음과 같이 쿼리를 실행할 수 있습니다.
select COLUMN_NAME,COLUMN_TYPE from information_schema.COLUMNS where TABLE_NAME='ttypes' and COLUMN_TYPE LIKE '%unsigned%'
.
다음과 같은 쿼리가있는 특정 변수 (예 : cinter)의 유형을 쉽게 결정할 수 있습니다.
select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='ttypes' and COLUMN_TYPE LIKE '%unsigned%' and COLUMN_NAME LIKE 'cinteger'
.
위의 코드는 서명되지 않은 경우에만 검색되는 변수의 이름을 반환합니다.
마침내 MySQL 루프, 프로 시저 또는 좋아하는 스크립팅 언어를 사용 하여이 결과를 사용하고 / 또는 다른 변수를 계속 검색 할 수 있습니다.