第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

MySQL find_in_set與多個(gè)搜索字符串

MySQL find_in_set與多個(gè)搜索字符串

浮云間 2019-10-09 17:48:19
我發(fā)現(xiàn)find_in_set僅按單個(gè)字符串搜索:find_in_set('a', 'a,b,c,d')在上面的示例中,“ a”是唯一用于搜索的字符串。有什么方法可以使用find_in_set類型的功能并通過(guò)多個(gè)字符串進(jìn)行搜索,例如:find_in_set('a,b,c', 'a,b,c,d')在上面的示例中,我想通過(guò)三個(gè)字符串'a,b,c'進(jìn)行搜索。我看到的一種方法是使用ORfind_in_set('a', 'a,b,c,d') OR find_in_set('b', 'a,b,c,d') OR find_in_set('b', 'a,b,c,d')除此之外,還有其他方法嗎?
查看完整描述

3 回答

?
慕萊塢森

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

沒(méi)有本機(jī)函數(shù)可以執(zhí)行此操作,但是您可以使用以下技巧來(lái)實(shí)現(xiàn)目標(biāo)


WHERE CONCAT(",", `setcolumn`, ",") REGEXP ",(val1|val2|val3),"


查看完整回答
1 反對(duì) 回復(fù) 2019-10-09
?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

MySQL函數(shù)find_in_set()只能在一組字符串中搜索一個(gè)字符串。


第一個(gè)參數(shù)是一個(gè)字符串,因此沒(méi)有辦法使它用逗號(hào)分隔的字符串解析為字符串(根本不能在SET元素中使用逗號(hào)!)。第二個(gè)參數(shù)是SET,它依次由逗號(hào)分隔的字符串表示,因此您希望find_in_set('a,b,c', 'a,b,c,d')可以正常使用,但'a,b,c'按定義它肯定無(wú)法在任何SET中找到字符串-它包含逗號(hào)。


查看完整回答
反對(duì) 回復(fù) 2019-10-09
?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

您也可以使用此自定義功能


CREATE FUNCTION SPLIT_STR(

  x VARCHAR(255),

  delim VARCHAR(12),

  pos INT

)

RETURNS VARCHAR(255)

RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),

       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),

       delim, ''); 


DELIMITER $$

    CREATE FUNCTION `FIND_SET_EQUALS`(`s1` VARCHAR(200), `s2`  VARCHAR(200)) 

    RETURNS TINYINT(1)

    LANGUAGE SQL

    BEGIN

          DECLARE a INT Default 0 ;

            DECLARE isEquals TINYINT(1) Default 0 ;

          DECLARE str VARCHAR(255);

          IF s1 IS NOT NULL AND s2 IS NOT NULL THEN

             simple_loop: LOOP

                 SET a=a+1;

                 SET str= SPLIT_STR(s2,",",a);

                 IF str='' THEN

                    LEAVE simple_loop;

                 END IF;

                 #Do  check is in set

                 IF FIND_IN_SET(str, s1)=0 THEN

                    SET isEquals=0;

                     LEAVE simple_loop;

                 END IF;

                 SET isEquals=1;

            END LOOP simple_loop;

          END IF;

        RETURN isEquals;

    END;

    $$

    DELIMITER ;


SELECT FIND_SET_EQUALS('a,c,b', 'a,b,c')- 1

SELECT FIND_SET_EQUALS('a,c', 'a,b,c')- 0

SELECT FIND_SET_EQUALS(null, 'a,b,c')- 0


查看完整回答
反對(duì) 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 4766 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)