sql >> データベース >  >> RDS >> Mysql

char(1)にnullを挿入する

    文字列'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. エラー:Node.jsv6.9.1およびMySQLでのハンドシェイク非アクティブタイムアウト

    2. PostgreSQLで日付をユリウス日に変換する

    3. C#用のmysql.data.dllはどこにありますか

    4. Oracleデータベースバックアップの概要