1. 程式人生 > >mysql 比較函數和操作符

mysql 比較函數和操作符

排序 rom eat literal sce exp 因此 最小 一個

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, 0
mysql> SELECT 1 BETWEEN 2 AND 3;
        -> 0
mysql> SELECT ‘b‘ BETWEEN ‘a‘ AND ‘c‘;
        -> 1
mysql> SELECT 2 BETWEEN 2 AND ‘3‘;
        -> 1
mysql> SELECT 2 BETWEEN 2 AND ‘x-3‘;
        -> 0
  

2、COALESCE(value1,...) :返回第一個非NULL的參數

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

 

mysql> SELECT COALESCE(NULL,1);
        -> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
        -> NULL 

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

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

mysql> SELECT GREATEST(2,0);
        -> 2
mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);
        -> 767.0
mysql> 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);
        -> 0
mysql> 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);
        -> 0
mysql> 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, 0
mysql> 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 IS UNKNOWN;
        -> 1, 1, 1

6、INTERVAL(N,N1,N2,...)

  說明:N < N1返回0,N < N2返回1,一次類推。如果N為NULL返回-1.所有的參數作為整數看待,要求參數滿足N1<N2<...<Nn,這樣能夠快速的進行這版查找

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

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

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

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

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

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

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

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

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

mysql> SELECT LEAST(2,0);
        -> 0
mysql> SELECT LEAST(34.0,3.0,5.0,767.0);
        -> 3.0
mysql> SELECT LEAST(‘B‘,‘A‘,‘C‘);
        -> ‘A‘
mysql> select least(10,‘a‘)
        -> 0

mysql 比較函數和操作符