programing

MySQL 데이터베이스에 BOOL 값을 삽입하는 방법

css3 2023. 9. 2. 08:42

MySQL 데이터베이스에 BOOL 값을 삽입하는 방법

값을 에 삽입하려고 합니다.BOOL다음 스크립트를 사용하여 MySQL(v 5.5.20)의 데이터 유형을 지정할 수 있습니다.

CREATE DATABASE DBTest;
USE DBTest;
DROP TABLE IF EXISTS first;
CREATE TABLE first (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY , name VARCHAR(30) ,sale  BOOL,); 
INSERT INTO first VALUES ("", "G22","TRUE");
INSERT INTO first VALUES ("", "G23","FALSE");

그런데 그.INSERT문은 삽입만 합니다.0(0) 두 가지 모두에 대한 부울 열로TRUE그리고.FALSE옵션!왜 이런 일이 일어나는지 저에게 알려주실 수 있나요?

TRUE그리고.FALSE는 키워드이며 문자열로 따옴표로 묶어서는 안 됩니다.

INSERT INTO first VALUES (NULL, 'G22', TRUE);
INSERT INTO first VALUES (NULL, 'G23', FALSE);

문자열로 인용함으로써 MySQL은 해당 문자열을 정수로 캐스팅합니다(불리언은 실제로는 1바이트에 불과하므로).INTMySQL)에서 숫자가 아닌 문자열에 대해 0으로 변환됩니다.따라서, 당신은.0표의 두 값 모두에 대해 계산합니다.

0으로 캐스팅된 숫자가 아닌 문자열:

mysql> SELECT CAST('TRUE' AS SIGNED), CAST('FALSE' AS SIGNED), CAST('12345' AS SIGNED);
+------------------------+-------------------------+-------------------------+
| CAST('TRUE' AS SIGNED) | CAST('FALSE' AS SIGNED) | CAST('12345' AS SIGNED) |
+------------------------+-------------------------+-------------------------+
|                      0 |                       0 |                   12345 |
+------------------------+-------------------------+-------------------------+

하지만 키워드는 해당 내용을 반환합니다.INT표현:

mysql> SELECT TRUE, FALSE;
+------+-------+
| TRUE | FALSE |
+------+-------+
|    1 |     0 |
+------+-------+

또한 표준 SQL 문자열 인클로저와 마찬가지로 이중 따옴표를 단일 따옴표로 대체했습니다.마침내, 나는 당신의 빈 문자열을 교체했습니다.id와 함께NULL빈 문자열은 경고를 발생시킬 수 있습니다.

언급URL : https://stackoverflow.com/questions/13259654/how-to-insert-bool-value-to-mysql-database