MySQL INSTR() 與 FIND_IN_SET() 函式有什麼區別?


眾所周知,這兩個函式都用於從提供給它們的引數中搜索字串,但它們之間存在一些顯著差異,如下所示

  • FIND_IN_SET() 函式使用字串列表,它本身是一個包含由逗號分隔的子字串的字串。而 INSTR() 函式包含一個字串,它將從中查詢子字串(如果存在)的首次出現的索引位置。
  •  對於整數,FIND_IN_SET() 比 INSTR() 函式更合適。可透過以下示例理解

示例

mysql> Select IF(INSTR('10,11,12,13',2) > 0,1,0) As Result;
+--------+
| Result |
+--------+
|      1 |
+--------+
1 row in set (0.05 sec)

mysql> Select IF(FIND_IN_SET(2,'10,11,12,13') > 0,1,0)As Result;
+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

從以上示例的結果集中,我們可以看到 INSTR() 函式返回 1 甚至是 2,因為引數中不存在字串。但 FIND_IN_SET() 函式返回 0,這是正確的答案。

更新日期:2020-02-04

376 人檢視

職場進階

課程結業可獲認證

立即開始
廣告
© . All rights reserved.