欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

示例:

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

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

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

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

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

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

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

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

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

二、應(yīng)用場(chǎng)景

就拿若依的權(quán)限認(rèn)證的其中一條sql來(lái)給大家舉例吧:

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

查詢結(jié)果:

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

那有的朋友就會(huì)說(shuō)了,為什么不用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后面只能跟常量, 如果跟字符串的話,就會(huì)和字符串的值進(jìn)行完全匹配,所以上面的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是廣泛的模糊匹配,字符串中沒(méi)有分隔符,F(xiàn)ind_IN_SET 是精確匹配,字段值會(huì)以英文”,”分隔,
Find_IN_SET查詢的結(jié)果要小于like查詢的結(jié)果。

總結(jié)

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

  • 銀河麒麟V10安裝MySQL5.7的詳細(xì)過(guò)程

    銀河麒麟V10安裝MySQL5.7的詳細(xì)過(guò)程

    這篇文章主要介紹了銀河麒麟V10安裝MySQL5.7,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Ubuntu中MySQL的參數(shù)文件my.cnf示例詳析

    Ubuntu中MySQL的參數(shù)文件my.cnf示例詳析

    這篇文章主要給大家介紹了關(guān)于Ubuntu中MySQL的參數(shù)文件my.cnf的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • mysql 8.0.15 winx64解壓版圖文安裝教程

    mysql 8.0.15 winx64解壓版圖文安裝教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 winx64解壓版圖文安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)

    mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn)

    這篇文章主要介紹了mysql decimal數(shù)據(jù)類型轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MySQL Replace INTO的使用

    MySQL Replace INTO的使用

    今天DST里面有個(gè)插件作者問(wèn)我關(guān)于Replace INTO和INSERT INTO的區(qū)別,我和他說(shuō)晚上上我的blog看吧,那時(shí)候還在忙,現(xiàn)在從MYSQL手冊(cè)里找了點(diǎn)東西,MYSQL手冊(cè)里說(shuō)REPLACE INTO說(shuō)的還是比較詳細(xì)的.
    2008-04-04
  • 解析Mysql多表查詢的實(shí)現(xiàn)

    解析Mysql多表查詢的實(shí)現(xiàn)

    本篇文章是對(duì)Mysql多表查詢的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql 5.7.17 安裝圖文教程(windows)

    mysql 5.7.17 安裝圖文教程(windows)

    這篇文章主要介紹了windows下mysql 5.7.17 安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • RHEL6.5編譯安裝MySQL5.6.26教程

    RHEL6.5編譯安裝MySQL5.6.26教程

    這篇文章主要介紹了RHEL6.5編譯安裝MySQL5.6.26教程的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • MySQL CPU過(guò)高的排查方法

    MySQL CPU過(guò)高的排查方法

    這篇文章主要介紹了MySQL CPU過(guò)高的排查方法,通過(guò)top命令查看服務(wù)器CPU資源使用情況,明確CPU占用率較高的是否是mysqld進(jìn)程,文章通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 最新評(píng)論