Mysql
 sql >> база данни >  >> RDS >> Mysql

Вмъкване на нула в char(1)

Изглежда, че може да се опитвате да вмъкнете низа 'NULL' в char(1) поле, а не SQL NULL, и имате активиран строг SQL режим, който предотвратява съкращаването му до N .

Ако можете, бягайте

SHOW CREATE TABLE <your_table_name>

в обвивката на MySQL, за да определите дали вашето целево поле приема NULL. Без контекст (изпълнявате ли това като чист SQL или се свързвате с базата данни от някаква клиентска програма на друг език?) е трудно да се предостави точното решение, но може да имате нещо подобно:

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

където 'NULL' е просто низ без специално значение, когато това, което възнамерявате да е

INSERT <your_table_name>
SELECT first_name, NULL, last_name

Ето една илюстрация:

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

Малко пънт - извинете, ако няма полза...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Хибернация:объркване на самостоятелно присъединяване?

  2. MySQL Изберете горните N реда

  3. Как да конвертирате времето в секунди във формат HH:MM:SS в MySQL?

  4. Вмъкване на променлива в SQL заявка от Java

  5. Добавете нови колони към съществуваща таблица при миграция в Laravel