最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中find_in_set()函數(shù)用法詳解以及使用場景

 更新時間:2023年03月10日 14:20:24   作者:鵝中原錘王  
前幾天在sql查詢的時候,想要判斷數(shù)據(jù)庫中表的某一列中的值是否在List集合中,接觸到了find_in_set的使用,用起來方便快捷,下面這篇文章主要給大家介紹了關于Mysql中find_in_set()函數(shù)用法詳解以及使用場景的相關資料,需要的朋友可以參考下

一、find_in_set() 函數(shù)詳解

示例:

select FIND_IN_SET('1', '1,2,3');
// 結果:1
select FIND_IN_SET('3', '1,2,3');
// 結果:3
select FIND_IN_SET('4', '1,2,3');
// 結果:0
// 后一個包含前一個返回大于0的元素所在位置,不包含前一個則返回0

相信大家看完以上示例就知道這個函數(shù)的大概作用了,以下是MySQL手冊中官方說明

FIND_IN_SET(str,strlist),該函數(shù)的作用是查詢字段(strlist)中是否包含(str)的結果,
返回結果為null或記錄 。

str 要查詢的字符串
strlist 需查詢的字段,參數(shù)以”,”分隔,例如如 '1,2,3'
假如字符串str在由N個子鏈組成的字符串列表strlist 中,則返回值的范圍在 1 到 N 之間。 一個字符串列表
就是一個由一些被’,‘ 符號分開的子鏈組成的字符串。如果第一個參數(shù)是一個常數(shù)字符串,而第二個是type SET列,
則FIND_IN_SET() 函數(shù)被優(yōu)化,使用比特計算。 
如果str不在strlist 或strlist 為空字符串,則返回值為 0 。
如任意一個參數(shù)為NULL,則返回值為 NULL。
這個函數(shù)在第一個參數(shù)包含一個逗號( , )時將無法正常運行。

概括一下就是(前一個字符串是A,后一個字符串是B):

如果B字符串包含A字符串:則返回大于0的值,這個值就是A字符串在B字符串的所在位置;

如果B字符串不包含A字符串:則返回0;

如果B字符串或者A字符串有任意一個是null,則返回null;

如果A字符串包含逗號,則無法執(zhí)行。

二、應用場景

就拿若依的權限認證的其中一條sql來給大家舉例吧:

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept 
WHERE dept_id = 101 or FIND_IN_SET(101, ancestors) ;

查詢結果:

sql想要實現(xiàn)的功能就是查詢部門id是101的,或者其他部門的ancestors字段(祖先)中有101的所有部門。使用FIND_IN_SET()函數(shù)完全可以實現(xiàn)。

那有的朋友就會說了,為什么不用in或者like呢,區(qū)別如下:

三、FIND_IN_SET()和IN、LIKE的區(qū)別:

1.IN和FIND_IN_SET的區(qū)別:

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept 
WHERE '101' IN ('101,102') ;

in后面只能跟常量, 如果跟字符串的話,就會和字符串的值進行完全匹配,所以上面的sql查詢不到記錄。
但是find_in_set()函數(shù)可以使用常量或字段。

2.like和FIND_IN_SET的區(qū)別:

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept 
WHERE ancestors LIKE '%10%' ;

SELECT dept_id, parent_id, ancestors, order_num, leader, phone FROM sys_dept 
WHERE FIND_IN_SET(10, ancestors)  ;

like是廣泛的模糊匹配,字符串中沒有分隔符,F(xiàn)ind_IN_SET 是精確匹配,字段值會以英文”,”分隔,
Find_IN_SET查詢的結果要小于like查詢的結果。

總結

到此這篇關于Mysql中find_in_set()函數(shù)用法詳解以及使用場景的文章就介紹到這了,更多相關Mysql find_in_set()函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

柯坪县| 卫辉市| 云霄县| 林州市| 繁峙县| 翼城县| 白玉县| 德安县| 孟州市| 芜湖县| 吕梁市| 沙河市| 柳林县| 万盛区| 镇沅| 通许县| 西林县| 江门市| 蓬莱市| 昌吉市| 许昌县| 绍兴市| 阿克苏市| 囊谦县| 仁布县| 安吉县| 古田县| 宜阳县| 通州区| 邹城市| 九台市| 赤壁市| 水富县| 长垣县| 双峰县| 大宁县| 融水| 漳州市| 永安市| 江达县| 沈丘县|