mysql比較函式 mysql 比較函式和操作符

2021-10-17 12:18:21 字數 2611 閱讀 3925

mysql之中的比較函式和操作符:

1、[not] between ... and ...  check whether a value is within a range of values

說明:expr between min and max

如果expr大於或等於表示式是否小於或等於最大和最小之間,返回1,否則返回0。

如果所有引數的型別相同,這相當於表示式(min<=expr和expr<=max)。否則會進行相應的型別轉換。

mysql> select 2 between 1 and 3, 2 between 3 and 1;-> 1, 0mysql> select 1 between 2 and 3;-> 0mysql> select 'b' between 'a' and 'c';-> 1mysql> select 2 between 2 and '3';-> 1mysql> select 2 between 2 and 'x-3';-> 0

2、coalesce(value1,...) :返回第乙個非null的引數

說明:返回列表中第乙個非空值,如果沒有非null值,則返回null。

mysql> select coalesce(null,1);-> 1mysql> select coalesce(null,null,null);-> null

3、greatest(value1,value2,...)

說明:返回引數列表中最大的引數

mysql> select greatest(2,0);-> 2mysql> select greatest(34.0,3.0,5.0,767.0);-> 767.0mysql> select greatest('b','a','c');-> 'c'

4、[not] in() -- 檢查值是否在資料集中

說明:expr in (value,...); 如果expr等於values列表中的任何乙個值則返回true,否則返回false;

如果value列表全是常數,mysql會根據expr的型別進行排序,然後進行二進位制查詢,這樣非常快速。

mysql> select 2 in (0,3,5,7);-> 0mysql> select 'wefwf' in ('wee','wefwf','weg');-> 1

盡量不要在乙個列表中混合使用引用和未加引號的值,因為比較引用值的規則(如字串)和未加引號的值(如數字)不同。因此,混合型別可能導致不一致的結果。例如,不要寫乙個這樣的表達:

錯誤的寫法:select val1 from tbl1 where val1 in (1,2,'a');

正確的寫法:select val1 from tbl1 where val1 in ('1','2','a');

5、 isnull(expr)

說明:如果expr為null,返回1,否則返回 0;

mysql> select isnull(1+1);-> 0mysql> select isnull(1/0);-> 1

5.1、is null: 測試值是否為null

mysql> select 1 is null, 0 is null, null is null;-> 0, 0, 1

5.2、<=>

說明:該操作符是安全的null比較符號,此運算子執行相等比較類似=運算子,但如果兩個運算元為null,而不是null,則返回1,如果乙個運算元為null返回0,而不是null。

mysql> select 1 <=> 1, null <=> null, 1 <=> null;-> 1, 1, 0mysql> select 1 = 1, null = null, 1 = null;-> 1, null, null

5.3、 is boolean value

說明:測試值是否為boolean值,boolean的值可以是true,false或者unknow

mysql> select 1 is true, 0 is false, null isunknown;-> 1, 1, 1

6、interval(n,n1,n2,...)

說明:n < n1返回0,n < n2返回1,一次類推。如果n為null返回-1.所有的引數作為整數看待,要求引數滿足n1

mysql> select interval(23, 1, 15, 17, 30, 44, 200);-> 3mysql> select interval(10, 1, 10, 100, 1000);-> 2mysql> select interval(22, 23, 30, 44, 200);-> 0

7、least(value1,value2,...)

說明:返回value列表中的最小值。

如果所有的引數都是null,則結果也是null,不需要進行比較

如果所有引數都是整數,則會返回乙個整數,進行整數比較

如果所有引數是實數,則返回乙個實數,進行實數比較

如果引數是由 數字和字串構成,引數將作為數字進行比較

如果所有引數都是非二進位制的字串,則作為非二進位制字元計較

其它情況,將引數統統作為二進位制比較

mysql> select least(2,0);-> 0mysql> select least(34.0,3.0,5.0,767.0);-> 3.0mysql> select least('b','a','c');-> 'a'mysql> select least(10,'a')-> 0

mysql查詢比較 mysql兩種查詢的比較

方法2更好。你可以在mysql 裡面嘗試一下explain。以下是我的分析資料 資料是自己加上的 explain select from good,good category where good.cate id good category.id id select type table type ...

mysql 字符集比較 mysql字符集與比較規則

mysql有4個級別的字符集和比較規則,分別是 伺服器級別 資料庫級別 表級別列級別 檢視伺服器級別命令 mysql show variables like character set server variable name value character set server utf8 1 ro...

Oracle函式和mysql函式比較

1.oracle中的to number 轉換成數字 oracle select to number 123 from dual 123 select to char 33 from dual 33 mysql select conv 123 10,10 123 select cast 123 as ...