首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本列中的搜索集

文本列中的搜索集
EN

Stack Overflow用户
提问于 2014-02-05 14:16:04
回答 2查看 79关注 0票数 0

我有文本列geotargeting,其中包含用逗号分隔的国家代码("US,DE,CA,GB,IT")。如果我有这个输入字符串"DE,CA,FR",我希望找到包含给定国家之一的所有行。

类似于FIND_IN_SET(str,strlist),但我有两个字符串列表。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-05 14:27:41

我认为只有这样你才能使用存储过程。检查这个,没有运行这段代码,但它可以帮助您

代码语言:javascript
复制
SET @myArrayOfValue = 'US,DE,CA,GB,IT';
SET @myArrayOfValue1 = 'DE,CA,FR';

WHILE (LOCATE(',', @myArrayOfValue) > 0)
DO
    SET @value = ELT(1, @myArrayOfValue);
    SET @value = SUBSTRING(@myArrayOfValue, LOCATE(',',@myArrayOfValue) + 1);

    WHILE (LOCATE(',', @myArrayOfValue1 ) > 0)
    DO
        SET @value1 = ELT(1, @myArrayOfValue1 );
        SET @value1 = SUBSTRING(@myArrayOfValue1 , LOCATE(',',@myArrayOfValue1 ) + 1);
    END WHILE;

   IF(value = @value1) THEN    
      // the value match.. do something here, may be insert it in a temporary table
   END IF;
END WHILE;
票数 1
EN

Stack Overflow用户

发布于 2014-02-05 15:55:06

代码语言:javascript
复制
DELIMITER $$

CREATE
    FUNCTION find_set_in_set (set_1 TEXT, set_2 TEXT)
    RETURNS BOOLEAN DETERMINISTIC

    BEGIN
        SET @i1 = LENGTH(set_1) - LENGTH(REPLACE(set_1, ',', '')) + 1;

        WHILE (@i1 > 0) DO
            SET @substr1 = SUBSTRING_INDEX(SUBSTRING_INDEX(set_1, ',', @i1), ',', -1);
            SET @i1 = @i1 - 1;
            SET @i2 = LENGTH(set_2) - LENGTH(REPLACE(set_2, ',', '')) + 1;

            WHILE (@i2 > 0) DO
                SET @substr2 = SUBSTRING_INDEX(SUBSTRING_INDEX(set_2, ',', @i2), ',', -1);
                SET @i2 = @i2 - 1;

                IF(@substr1 = @substr2) THEN
                    RETURN TRUE;
                END IF;
            END WHILE;
        END WHILE;

        RETURN FALSE;
    END
$$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21579717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档