MySQL 中非空列的空字串?
在 PHP 中,空字串等於 NULL 值,但在 MySQL 中,情況有所不同,即空字串不等於 NULL 值。為了理解上述語法,讓我們建立一個帶有 NOT NULL 約束的列,同時您可以插入空字串。
讓我們建立一個表。建立表的查詢如下所示:
mysql> create table EmptyStringNotNullDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Name varchar(10) not null, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.83 sec)
現在,您可以在表中插入一些記錄以檢查空字串是 null 還是非 null。插入記錄的查詢如下所示:
mysql> insert into EmptyStringNotNullDemo(Name) values('John'); Query OK, 1 row affected (0.17 sec) mysql> insert into EmptyStringNotNullDemo(Name) values(''); Query OK, 1 row affected (0.43 sec) mysql> insert into EmptyStringNotNullDemo(Name) values('Carol'); Query OK, 1 row affected (0.12 sec) mysql> insert into EmptyStringNotNullDemo(Name) values(''); Query OK, 1 row affected (0.13 sec) mysql> insert into EmptyStringNotNullDemo(Name) values(''); Query OK, 1 row affected (0.16 sec) mysql> insert into EmptyStringNotNullDemo(Name) values('Larry'); Query OK, 1 row affected (0.14 sec)
使用 select 語句顯示錶中的所有記錄。查詢如下所示:
mysql> select *from EmptyStringNotNullDemo;
以下是輸出:
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | | | 3 | Carol | | 4 | | | 5 | | | 6 | Larry | +----+-------+ 6 rows in set (0.00 sec)
現在檢查空字串在 MySQL 中是 NULL 還是 NOT NULL。如果您得到 0,則表示空字串不等於 NULL,否則空字串為 NULL。查詢如下所示:
mysql> select Name, Name IS NULL as EmptyValueIsNotNULL from EmptyStringNotNullDemo;
以下是輸出:
+-------+---------------------+ | Name | EmptyValueIsNotNULL | +-------+---------------------+ | John | 0 | | | 0 | | Carol | 0 | | | 0 | | | 0 | | Larry | 0 | +-------+---------------------+ 6 rows in set (0.00 sec)
您可以藉助使用者定義變數來實現。語法如下所示:
SET @anyVariableName=” ”; UPDATE yourTableName SET yourColumnName= @anyVariableName;
對給定的表實施上述語法。以下查詢用於宣告和定義使用者變數。
mysql> set @emptyStringValue=""; Query OK, 0 rows affected (0.00 sec)
使用空字串更新表。查詢如下所示:
mysql> update EmptyStringNotNullDemo set Name=@emptyStringValue; Query OK, 3 rows affected (0.25 sec) Rows matched: 6 Changed: 3 Warnings: 0
再次顯示錶中的所有記錄。查詢如下所示:
mysql> select *from EmptyStringNotNullDemo;
以下是輸出:
+----+------+ | Id | Name | +----+------+ | 1 | | | 2 | | | 3 | | | 4 | | | 5 | | | 6 | | +----+------+ 6 rows in set (0.00 sec)
“Name”列已更新。
廣告