2017-02-01 4 views
2

こんにちはこれは私が照会していますテーブル:mysqlのnullとして列フィールドを扱う

mytable 
id, name 
1,name1 
2,name2 
3,' ' //this is a white space 
4,null 

しかし、私はnullに空白列を設定するには、このクエリを使用する場合:

update mytable set `name`= CASE `name` WHEN '' THEN NULL ELSE `name` END; 

そこにスペースがある列フィールドも更新されます。 その結果は次のとおりです。

1,name1 
2,name2 
3,null 
4,null 

なぜMySQLは「ブランク」とも空白を扱うのですか? テーブル内の空白だけをnullに置き換え、空白を空白にするオプションはありますか?

答えて

3

MySQLは''' '、さらには' 'を同じものとして処理するため、

するTry問い合わせ:

select '' = '    ' 

それは本当の意味その1を返します。したがって、MySQLは、任意の長さのすべての空白文字列を等しく扱います。

あなたは長さ0空の文字列と行を更新する場合は、Length機能を使用します。

UPDATE mytable 
SET 
    `name` = NULL 
WHERE 
    `name` = '' AND LENGTH(`name`) = 0; 
+0

ありがとう!これはトリックでした! :) – user2176576

関連する問題