Mysql 文本列中的搜索集
我有一个文本列Mysql 文本列中的搜索集,mysql,sql,Mysql,Sql,我有一个文本列地理定位,其中包含以逗号分隔的国家代码(“US、DE、CA、GB、IT”)。如果我有这个输入字符串“DE,CA,FR”,我想找到包含给定国家之一的所有行 类似于在集合中查找集合(str,strlist),但我有两个字符串列表 谢谢。我认为您必须使用存储过程的唯一方法。选中此复选框不会运行此代码,但它可以帮助您 SET @myArrayOfValue = 'US,DE,CA,GB,IT'; SET @myArrayOfValue1 = 'DE,CA,FR'; WHILE (LOCA
地理定位
,其中包含以逗号分隔的国家代码(“US、DE、CA、GB、IT”)。如果我有这个输入字符串“DE,CA,FR”,我想找到包含给定国家之一的所有行
类似于在集合中查找集合(str,strlist),但我有两个字符串列表
谢谢。我认为您必须使用存储过程的唯一方法。选中此复选框不会运行此代码,但它可以帮助您
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;
修复您的数据结构,这样您就有了一个关联表,每个实体每行一个代码。这将大大有助于对您的数据进行此查询和其他查询。太好了。如果它对你有帮助,别忘了把它标记为答案。
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
$$