Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Null in char(1) einfügen

Es hört sich so an, als würden Sie versuchen, die Zeichenfolge 'NULL' einzufügen in das char(1) statt eines SQL-NULL-Felds, und Sie haben den strikten SQL-Modus aktiviert, der verhindert, dass dies auf N gekürzt wird .

Wenn Sie dazu in der Lage sind, führen Sie

aus
SHOW CREATE TABLE <your_table_name>

in der MySQL-Shell, um festzustellen, ob Ihr Zielfeld NULLen akzeptiert. Ohne Kontext (führen Sie dies als reines SQL aus oder stellen Sie von einem Client-Programm in einer anderen Sprache aus eine Verbindung zur Datenbank her?) ist es schwierig, die genaue Lösung bereitzustellen, aber Sie könnten so etwas haben:

INSERT <your_table_name>
SELECT first_name, 'NULL', last_name

wobei 'NULL' einfach eine Zeichenfolge ohne besondere Bedeutung ist, wenn das, was Sie beabsichtigen,

ist
INSERT <your_table_name>
SELECT first_name, NULL, last_name

Hier ist eine Illustration:

mysql> CREATE TABLE my_table ( middle_initial CHAR(1) NULL );
mysql> INSERT INTO my_table SELECT 'NULL';
mysql> SHOW WARNINGS;

Level       Code    Message
Warning     1265    Data truncated for column 'middle_initial' at row 1

mysql> SELECT * FROM my_table;

middle_initial
--------------
N

mysql> set sql_mode = 'STRICT_TRANS_TABLES';

mysql> INSERT INTO my_table SELECT 'NULL';

ERROR 1406 (22001) at line 16: Data too long for column 'middle_initial' at row 1

mysql> INSERT INTO my_table SELECT NULL;
mysql> SELECT * FROM my_table;

middle_initial
--------------
N
NULL

Bisschen ein Kahn - Entschuldigung, wenn es nichts nützt ...