我們已經知道mysql使用sql select命令依據where子句來讀取資料表中的資料,但是當提供的查詢條件欄位為null時,該命令可能就無法正常工作。為了處理這種情況,mysql提供了三大運算子:
is null:當列的值是null,此運算子返回true。
is not null:當列的值不為null,運算子返回true。
<=>:比較操作符(不同於=運算子),當比較的兩個值相等或者都為null時返回true。
關於null的條件比較運算時比較特殊的。你不能使用= null 或 != null在列中查詢null值。
在mysql中,null值與任何其它值的比較(即使是null)永遠返回null,即null = null返回null。
mysql中處理null使用is null和is not null運算子。
mysql>
select
*from student where chinese =
null
;empty set
(0.00 sec)
mysql>
select
*from student where chinese !=
null
;empty set
(0.01 sec)
以上例項中你可以看到=和!=運算子是不起作用的;
查詢資料表中chinese列是否為null,必須使用is null和is not null,如下例項:
mysql>
select
*from student where chinese is
null;+
---------------+--------------+
| name | chinese |
+---------------+--------------+
| 趙六 |
null|+
---------------+--------------+
1rows
inset
(0.01 sec)
mysql>
select
*from student where chinese is
notnull;+
---------------+--------------+
| name | chinese |
+---------------+--------------+
| 張三 |98|
| 李四 |76|
+---------------+--------------+
2rows
inset
(0.01 sec)
mysql使用regexp
操作符來進行正規表示式匹配。下表中的正則模式可應用於regexp操作符中。
模式描述
^匹配輸入字串的開始位置。如果設定了regexp物件的multiline屬性,^也匹配』\n』或』\r』之後的位置。
$匹配輸入字串的結束位置。如果設定了regexp物件的multiline屬性,$也匹配』\n』或』\r』之前的位置。
.匹配除"\n"之外的任何單個字元。要匹配包括』\n』在內的任何字元,請使用像』[.\n]'的模式
[…]字元集合。匹配所包含的任意乙個字元。例如,』[abc]『可以匹配"plain"中的』a』。
[^…]
負值字元集合。匹配未包含的任意字元。例如,』[ ^abc ]『可以匹配"plain"中的』p』。
p1|p2|p3
匹配p1或p2或p3。例如,『z|food』能匹配"z"或"food"。』(z|f)ood』則匹配"zood"或"food"。
*匹配前面的子表示式零次或多次。例如,zo能匹配"z"以及"zoo"。 *等價於
+匹配前面的字表示式一次或多次。例如,'zo+'能匹配"zo"以及"zoo",但不能匹配"z"。+等價於。
n是乙個非負整數。匹配確定的n次。例如』o『不能匹配"bob"中的』o』,但是能匹配"food"中的兩個o。
m和n均為非負整數,其中n <= m。最少匹配n次且最多匹配m次。
了解以上的正則需求後,我們就可以根據自己的需求來編寫帶有正規表示式的sql語句。以下我們將列出幾個小例項來加深我們的理解:
1、查詢name欄位中以』st』為開頭的所有資料:
mysql>
select name from student where name regexp
'^st'
;
2、查詢name欄位中以』ok』為結尾的所有資料:
mysql>
select name from student where name regexp
'ok$'
;
3、查詢name欄位中包含』mar』字串的所有資料:
mysql>
select name from student where name regexp
'mar'
;
4、查詢name欄位中以母音字元開頭或以』ok』字串結尾的所有資料:
mysql>
select name from student where name regexp
'^[aeiou]|ok$'
;
mysql之null值處理函式
ifnull expr1,expr2 如果第乙個引數 expr1 不為null則直接返回它,否則返回第二個引數 expr2。返回值是數字或者字串。它相當於oracle中的nvl函式 select ifnull 1,0 select ifnull null,10 select ifnull 1 0,y...
MySQL 處理 null 值的問題
mysql中null是不參與計算的,對null進行計算,使用 is null 和 is not null 運算子 只有 才支援null的比較,其他比較運算對有null運算元時返回的結果就是null,永遠返回false,即 null null 返回false 結論 如果在not in子查詢中有null...
Mysql 分割槽處理NULL值的方式
一般情況下,mysql的分割槽把null當做零值,或者乙個最小值進行處理 對於range分割槽 create table test null id int partition by range id partition p0 values less than 6 partition p1 value...