sql >> Database teknologi >  >> RDS >> Mysql

Indsætter null i char(1)

Det lyder som om du forsøger at indsætte strengen 'NULL' ind i char(1) felt, snarere end en SQL NULL, og du har streng SQL-tilstand aktiveret, hvilket forhindrer, at dette afkortes til N .

Hvis du er i stand, så kør

SHOW CREATE TABLE <your_table_name>

i MySQL-skallen for at bestemme, om dit målfelt accepterer NULL'er. Uden kontekst (kører du dette som ren SQL, eller opretter du forbindelse til databasen fra et klientprogram på et andet sprog?) er det svært at give den nøjagtige løsning, men du kan have noget som dette:

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

hvor 'NULL' simpelthen er en streng uden nogen særlig betydning, når det du har til hensigt er

INSERT <your_table_name>
SELECT first_name, NULL, last_name

Her er en 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

Lidt af et slag - undskyld hvis det ikke nytter ...




  1. forskel mellem tabellerne

  2. Hvorfor er UNION-forespørgsler så langsomme i MySQL?

  3. PHP-kalender med tilbagevendende begivenheder fra MySQL-database

  4. Udførelse af matematisk operation på midlertidig kolonne i SQL