Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ใน MySQL ฟังก์ชัน FIELD() ต่างจาก FIND_IN_SET() อย่างไร

ทั้งสองฟังก์ชันใช้ค้นหาสตริงจากอาร์กิวเมนต์ แต่มีความแตกต่างสำคัญดังนี้:

FIND_IN_SET() - ใช้รายการสตริงที่เป็นสตริงเดียวมีคั่นด้วยเครื่องหมายจุลภาค (comma) ในขณะที่ FIELD() มีรายการสตริงแยกกันหลายตัว ที่จะหาตำแหน่งดัชนีของสตริงที่ต้องการค้นหา

FIND_IN_SET() - คืนค่า NULL หากอาร์กิวเมนต์ใดเป็น NULL (ไม่ว่าจะเป็นสตริงค้นหาหรือรายการสตริง) ในทางตรงข้าม FIELD() ไม่คืน NULL แต่คืนค่า 0 หากสตริงค้นหาเป็น NULL

ตัวอย่าง

mysql> SELECT FIND_IN_SET(NULL, 'Ram is a good boy') AS Result;
+--------+
| Result |
+--------+
| NULL   |
+--------+
1 row in set (0.00 sec)
mysql> SELECT FIND_IN_SET('RAM', NULL) AS RESULT;
+--------+
| RESULT |
+--------+
| NULL   |
+--------+
1 row in set (0.00 sec)
mysql> SELECT FIELD(NULL, 'Ram', 'is', 'good', 'boy');
+-------------------------------------+
| FIELD(NULL, 'Ram', 'is', 'good', 'boy') |
+-------------------------------------+
| 0                                   |
+-------------------------------------+
1 row in set (0.00 sec)