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

mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)

 更新時(shí)間:2024年08月13日 11:51:56   作者:@步行者@  
MySQL 中的 FIND_IN_SET 函數(shù)用于在逗號(hào)分隔的字符串列表中查找指定字符串的位置,本文就來(lái)介紹一下mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)

一、find_in_set()

我們知道m(xù)ysql提供了一個(gè)好用的函數(shù)

FIND_IN_SET(str,strlist),

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

str 要查詢的字符串
strlist 需查詢的字段,參數(shù)以”,”分隔,例如如 '1,2,3'。

下面有一組示例

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

我們一般在查詢的where條件使用 FIND_IN_SET(str,strlist)>0,則說(shuō)明strlist包含str

但是這個(gè)函數(shù)的第一個(gè)參數(shù)只能判斷是單個(gè)字符串,如果我有以下需求

1. 判斷字符串 '1,3' 中的元素是否有任意一個(gè)元素存在字符串 '1,3,4,5,7',意思就是1或者3只要有任意一個(gè)存在字符串 '1,3,4,5,7' 中就算匹配成功。

2. 再比如判斷字符串 '1,3,5' 中的所有元素是否都存在于字符串 '1,3,4,5,7' 中,即1,3,5每個(gè)元素都要在 字符串 '1,3,4,5,7'中能找到才算匹配成功。

針對(duì)需求1,提供了一個(gè)叫 FIND_PART_IN_SET  的函數(shù)

針對(duì)需求2,提供了一個(gè)叫 FIND_ALL_PART_IN_SET 的函數(shù)

二、FIND_PART_IN_SET

CREATE FUNCTION `FIND_PART_IN_SET`(str1 text, str2 text)
    RETURNS text
BEGIN
    #傳入兩個(gè)逗號(hào)分割的字符串,判斷第二個(gè)字符串是否包含第一個(gè)字符串split之后的單個(gè)
    DECLARE CURRENTINDEX INT;#當(dāng)前下標(biāo)
    DECLARE CURRENTSTR text;
    DECLARE result int;
    set result = 0;
    set CURRENTINDEX = 0;
    set CURRENTSTR = '';
    IF str1 IS NOT NULL AND str1 != '' THEN
        SET CURRENTINDEX = LOCATE(',', str1);
        WHILE CURRENTINDEX > 0
            DO
                SET CURRENTSTR = substring(str1, 1, CURRENTINDEX - 1);
                if FIND_IN_SET(CURRENTSTR, str2)>0 THEN
                    set result = 1;
                end if;
                SET str1 = substring(str1, CURRENTINDEX + 1);
                SET CURRENTINDEX = LOCATE(',', str1);
            END WHILE;
        #只傳一個(gè) 和 最后無(wú)逗號(hào)的情況
        IF LENGTH(str1) > 0 THEN
            if FIND_IN_SET(str1, str2)>0 THEN
                set result = 1;
            end if;
        END IF;
    END IF;
    RETURN result;
END;

實(shí)際調(diào)用判斷FIND_PART_IN_SET(str1 ,str2)>0即可,例如FIND_PART_IN_SET('1,3' , '1,3,4,5')>0

三、FIND_ALL_PART_IN_SET

CREATE FUNCTION `FIND_ALL_PART_IN_SET`(str1 text, str2 text)
    RETURNS text
BEGIN
    #傳入兩個(gè)逗號(hào)分割的字符串,判斷第二個(gè)字符串是否全部包含第一個(gè)字符串split之后的單個(gè)
    DECLARE CURRENTINDEX INT;#當(dāng)前下標(biāo)
    DECLARE CURRENTSTR text;
    DECLARE RESULT int;
    DECLARE TOTALCOUNT int;
    DECLARE TRUECOUNT int;
    set RESULT = 0;
    set CURRENTINDEX = 0;
    set CURRENTSTR = '';
    set TOTALCOUNT = 0;
    set TRUECOUNT = 0;
    IF str1 IS NOT NULL AND str1 != '' THEN
        SET CURRENTINDEX = LOCATE(',', str1);
        WHILE CURRENTINDEX > 0
            DO
                SET TOTALCOUNT = TOTALCOUNT + 1;
                SET CURRENTSTR = substring(str1, 1, CURRENTINDEX - 1);
                if FIND_IN_SET(CURRENTSTR, str2)>0 THEN
                    SET TRUECOUNT = TRUECOUNT + 1;
                end if;
                SET str1 = substring(str1, CURRENTINDEX + 1);
                SET CURRENTINDEX = LOCATE(',', str1);
            END WHILE;
        #只傳一個(gè) 和 最后無(wú)逗號(hào)的情況
        IF LENGTH(str1) > 0 THEN
            SET TOTALCOUNT = TOTALCOUNT + 1;
            if FIND_IN_SET(str1, str2)>0 THEN
                SET TRUECOUNT = TRUECOUNT + 1;
            end if;
        END IF;
    END IF;
    IF TOTALCOUNT > 0 AND TRUECOUNT = TOTALCOUNT THEN
        SET RESULT = 1;
    END IF;
    RETURN result;
END;

實(shí)際調(diào)用判斷FIND_ALL_PART_IN_SET(str1 ,str2)>0即可,例如FIND_PART_IN_SET('1,3,5' , '1,3,4,5,7')>0 

到此這篇關(guān)于mysql中find_in_set()函數(shù)用法及自定義增強(qiáng)函數(shù)的文章就介紹到這了,更多相關(guān)mysql find_in_set()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL之存儲(chǔ)引擎使用及說(shuō)明

    MySQL之存儲(chǔ)引擎使用及說(shuō)明

    這篇文章主要介紹了MySQL之存儲(chǔ)引擎使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL 5.5.49 大內(nèi)存優(yōu)化配置文件優(yōu)化詳解

    MySQL 5.5.49 大內(nèi)存優(yōu)化配置文件優(yōu)化詳解

    最近mysql服務(wù)器升級(jí)到了MySQL 5.5.49版本,性能比mysql 5.0.**肯定效率高了不少,但mysql的默認(rèn)配置文件不合理,這里是針對(duì)大內(nèi)存訪問(wèn)量大的機(jī)器的配置方案,需要的朋友可以參考下
    2016-05-05
  • MySQL JSON類型字段的簡(jiǎn)單使用

    MySQL JSON類型字段的簡(jiǎn)單使用

    JSON作為現(xiàn)在最為流行的數(shù)據(jù)交互形式,在5.7版本開始新增JSON數(shù)據(jù)類型,本文就來(lái)介紹一下MySQL JSON類型字段的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-08-08
  • MySQL的字符集操作命令總結(jié)

    MySQL的字符集操作命令總結(jié)

    這篇文章主要介紹了MySQL的字符集操作命令總結(jié),包括各種查看數(shù)據(jù)庫(kù)、數(shù)據(jù)表等查詢命令,需要的朋友可以參考下
    2014-04-04
  • MySQL索引使用說(shuō)明(單列索引和多列索引)

    MySQL索引使用說(shuō)明(單列索引和多列索引)

    這篇文章主要討論MySQL選擇索引時(shí)單列單列索引和多列索引使用,以及多列索引的最左前綴原則,需要的朋友可以參考下
    2018-01-01
  • 概述MySQL統(tǒng)計(jì)信息

    概述MySQL統(tǒng)計(jì)信息

    本篇文章通過(guò)統(tǒng)計(jì)信息的概念介紹以及MYSQL統(tǒng)計(jì)信息的優(yōu)勢(shì)等方面全面概述了MySQL統(tǒng)計(jì)信息的相關(guān)知識(shí)點(diǎn),有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • mysql死鎖和分庫(kù)分表問(wèn)題詳解

    mysql死鎖和分庫(kù)分表問(wèn)題詳解

    這篇文章主要給大家介紹了關(guān)于mysql死鎖和分庫(kù)分表問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • MySQL中列子查詢與行子查詢操作的學(xué)習(xí)教程

    MySQL中列子查詢與行子查詢操作的學(xué)習(xí)教程

    這篇文章主要介紹了MySQL中列子查詢與行子查詢操作的學(xué)習(xí)教程,子查詢是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-12-12
  • 計(jì)算機(jī)二級(jí)考試MySQL知識(shí)點(diǎn) 常用MYSQL命令

    計(jì)算機(jī)二級(jí)考試MySQL知識(shí)點(diǎn) 常用MYSQL命令

    這篇文章主要介紹了計(jì)算機(jī)二級(jí)考試MySQL知識(shí)點(diǎn),詳細(xì)介紹了常用MYSQL命令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • MySQL?衍生表(Derived?Tables)的使用

    MySQL?衍生表(Derived?Tables)的使用

    本文主要介紹了MySQL?衍生表(Derived?Tables)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧方法
    2025-06-06

最新評(píng)論

陆川县| 余干县| 凉城县| 壶关县| 明水县| 舞钢市| 溆浦县| 清远市| 咸丰县| 龙泉市| 竹北市| 布拖县| 井研县| 金山区| 于田县| 九江市| 南皮县| 图片| 威远县| 通榆县| 时尚| 商南县| 饶河县| 乳山市| 小金县| 青冈县| 措美县| 宽甸| 平潭县| 仪陇县| 南安市| 乐安县| 钟祥市| 舟山市| 阳东县| 庄浪县| 宜兰县| 土默特左旗| 湟源县| 连江县| 亳州市|