sql >> Databáze >  >> RDS >> Mysql

Vložení null do znaku (1)

Zdá se, že se možná pokoušíte vložit řetězec 'NULL' do char(1) místo SQL NULL a máte povolen přísný režim SQL, který zabraňuje zkrácení na N .

Pokud můžete, spusťte

SHOW CREATE TABLE <your_table_name>

v prostředí MySQL, abyste zjistili, zda vaše cílové pole přijímá hodnoty NULL. Bez kontextu (spouštíte to jako čisté SQL nebo se připojujete k databázi z nějakého klientského programu v jiném jazyce?) je obtížné poskytnout přesné řešení, ale můžete mít něco takového:

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

kde 'NULL' je jednoduše řetězec bez zvláštního významu, když to, co zamýšlíte, je

INSERT <your_table_name>
SELECT first_name, NULL, last_name

Zde je ilustrace:

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

Trochu puntík - omlouvám se, pokud k ničemu není...




  1. Vícenásobné počty a skupina podle

  2. Problémy se znakovou sadou PHP mysql utf8

  3. Přístup odepřen pro uživatele 'root'@'localhost' (pomocí hesla:YES )

  4. Jak nejlépe využít funkci komentářů v MySQL