将尝试尽可能地解释要求。 有一个逗号分隔的字符串列表,供一个人感兴趣。例如以下2人的例子
P1: "hockey, cricket, IT"
P2: "TV, football, cricket"
现在的目的是检查与其他用户的某个用户是否存在任何匹配值。在上面的例子中,我们应该从列表中得到板球。
对于mysql查询的任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
按照这种方式:
$string1 = 'hockey, cricket, IT';
$arrP1 = explode(',',$string1);
$string2 = 'TV, football, cricket';
$arrP2 = explode(',',$string2);
$strResult = array_intersect($arrP1, $arrP2);
print_r($strResult);//cricket
答案 1 :(得分:0)
可能不是最理想的选择,但有时您别无选择。 首先创建一个数字表。 (只是一个表,其中csv字符串中的1-maxitems中有足够的数字)。 然后创建此函数:
CREATE FUNCTION `CsvMatch`(`csv1` VARCHAR(255), `csv2` VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE returnVal VARCHAR(255);
SELECT result INTO returnVal FROM (
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(csv1, ',', numbers.number), ',', -1) result
FROM
numbers WHERE CHAR_LENGTH(csv1) - CHAR_LENGTH(REPLACE(csv1, ',', ''))>=numbers.number-1
HAVING FIND_IN_SET(result,csv2)
)d LIMIT 1;
RETURN returnVal;
END
使用以下方式调用此方法:
SELECT CsvMatch('123,321,222','555,321,551'); # returns 321
它将返回第一个匹配项或NULL。