MySQL 常見函數
字符串函數
CONCAT(str1,str2,...)
返回結果為連接參數產生的字符串。如有任何一個參數為NULL ,則返回值為 NULL。
[sql] view plai
</div>
</div>
- mysql> SELECT CONCAT('My', 'S', 'QL');
- -> 'MySQL'
- mysql> SELECT CONCAT('My', NULL, 'QL');
- -> NULL
- mysql> SELECT CONCAT(14.3);
- -> '14.3' </ol> </div> </div>
- select group_concat(id) from table_name; </ol> </div> 得到的結果是(1,2,3,4,5)</div>
- mysql> SELECT SUBSTRING(‘Quadratically’,5);-> ‘ratically’
- mysql> SELECT SUBSTRING(‘foobarbar’ FROM 4);-> ‘barbar’
- mysql> SELECT SUBSTRING(‘Quadratically’,5,6);-> ‘ratica’
- mysql> SELECT SUBSTRING(‘Sakila’, -3);-> ‘ila’
- mysql> SELECT SUBSTRING(‘Sakila’, -5, 3);-> ‘aki’
- mysql> SELECT SUBSTRING(‘Sakila’ FROM -4 FOR 2);-> ‘ki’ </ol> </div> </div>
- expr LIKE pat [ESCAPE 'escape-char'] </ul>
- mysql> SELECT IF(1>2,2,3);
- -> 3
- mysql> SELECT IF(1<2,'yes ','no');
- -> 'yes'
- mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
- -> 'no' </ol> </div> </div>
- mysql> SELECT IFNULL(1,0);
- -> 1
- mysql> SELECT IFNULL(NULL,10);
- -> 10
- mysql> SELECT IFNULL(1/0,10);
- -> 10
- mysql> SELECT IFNULL(1/0,'yes');
- -> 'yes' </ol> </div>
- mysql> SELECT NULLIF(1,1);
- -> NULL
- mysql> SELECT NULLIF(1,2);
- -> 1 </ol> </div> </div>
- select coalesce(a,b,c) from table_name; </ol> </div> 如果a不為null,則選擇a;如果a為null ,則選擇b;如果b為null,則選擇c;如果a、b、c都為null,則返回null。</div>
- 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' </ol> </div> </div>
GROUP_CONCAT函數
將取得的值用逗號連接。
[sql] view plai
</div>
</div>
LEFT,RIGHT函數
left(str,n)或者right(str,n)
返回字符串最左邊/右邊的n個字符。
REVERSE函數
reverse(str)
返回字符串str,順序與字符順序相反.
LENGTH函數,CHAR_LENGTH函數
length(str) char_length(str)
length: 是計算字段的長度一個漢字是算兩個字符,一個數字或字母算一個字符
char_length:不管漢字還是數字或者是字母都算是一個字符。
SUBSTRING()
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len)
SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
[sql] view plain
</div>
</div>
SUBSTRING_INDEX(str,delim,count)
返回字符串 str 中在第 count 個出現的分隔符 delim 之前的子串。
如果 count 是一個正數,返回從最后的(從左邊開始計數)分隔符到左邊所有字符。
如果 count 是負數,返回從最后的(從右邊開始計數)分隔符到右邊所有字符。
mysql>SELECT SUBSTRING_INDEX('www.baidu.com', '.', 2); -> 'www.baidu'
mysql> SELECT SUBSTRING_INDEX('www.baidu.com', '.', -2); -> 'baidu.com'
LOCATE(substr,str) ,判斷某個字符串是否存在某個標示符
返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0:
mysql> SELECT LOCATE('bar', ‘foobarbar');
-> 4
mysql> SELECT LOCATE('xbar', ‘foobar');
-> 0
返回子串 substr 在字符串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,返回值為 0:
mysql> SELECT LOCATE('bar', ‘foobarbar');
-> 4
mysql> SELECT LOCATE('xbar', ‘foobar');
-> 0
字符串比較函數
根據,MySQL 會自動將數字轉化為字符串,反之亦然。
mysql> SELECT 1+'1';
-> 2
mysql> SELECT CONCAT(2,' test');
-> '2 test'
若想要將數字明確地轉化為字符串,可使用 CAST()或 CONCAT()函數:
mysql> SELECT 38.8, CAST(38.8 AS CHAR);
-> 38.8, '38.8'
mysql> SELECT 38.8, CONCAT(38.8);
-> 38.8, '38.8'
CAST() 比較可取.
一般而言, 若字符串比較中任意一個表達式是區分大小寫的,則執行比較時也區分大小寫。
模式匹配,使用SQL簡單正規表達式比較。返回1 (TRUE) 或 0 (FALSE)。 若 expr 或 pat 中任何一個為 NULL,則結果為 NULL。
模式不需要為文字字符串。例如,可以被指定為一個字符串表達式或表列。
在模式中可以同LIKE一起使用以下兩種通配符:
字符 </td> |
說明 </td> </tr> | |||||||
% </td> |
匹配任何數目的字符,甚至包括零字符 </td> </tr> | |||||||
_ </td> |
只能匹配一種字符 </td> </tr> </tbody> </table> STRCMP函數</div>若所有的字符串均相同,則返回STRCMP(),若根據當前分類次序,第一個參數小于第二個,則返回 -1,其它情況返回 1 。 mysql> SELECT STRCMP('text', 'text2'); -> -1 mysql> SELECT STRCMP('text2', 'text'); -> 1 mysql> SELECT STRCMP('text', 'text'); -> 0
控制流函數CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
在第一個方案的返回結果中, value=compare-value。而第二個方案的返回結果是第一種情況的真實結果。如果沒有匹配的結果值,則返回結果為ELSE后的結果,如果沒有ELSE 部分,則返回值為 NULL。
</div> IF(expr1,expr2,expr3)函數
</div>
如果expr1為True,則返回expr2,否則返回expr3。
expr1 作為一個整數值進行計算,就是說,假如你正在驗證浮點值或字符串值, 那么應該使用比較運算進行檢驗。
[sql] view plai
</div>
</div>
IFNULL(expr1,expr2)
假如expr1 不為 NULL,則 IFNULL() 的返回值為 expr1; 否則其返回值為 expr2。IFNULL()的返回值是數字或是字符串,具體情況取決于其所使用的語境。這個函數一般用來替換NULL值,因為NULL值是不能參與數值運算的,下面這個語句就可以把NULL值用0來替換。
[sql] view plaincop
</div>
</div>
</div> NULLIF(expr1,expr2)
如果expr1 = expr2 成立,那么返回值為NULL,否則返回值為 expr1。
這和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。
[sql] view plaincopy
</div>
</div>
coalesce函數,返回參數中第一個不為空的值
[sql] view plaincopy
</div>
</div>
GREATEST(value1,value2,...)
當有2或多個參數時,返回值為最大(最大值的)參數。比較參數所依據的規律同LEAST()相同。
[sql] view plain
</div>
</div>
|