學習MySQL之NULL值處理 正規表示式

2021-10-03 08:48:26 字數 2805 閱讀 6008

我們已經知道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...