如何拆分字符串并与mysql中是否存在该字符串的列进行比较

如何拆分字符串并与mysql中是否存在该字符串的列进行比较,mysql,sql,Mysql,Sql,我得到了一条像下面这样的线 '.NET Framework','JAVA J2EE' 现在我需要用一个列Skillset检查上面的任何一个是否存在于该列中,并且需要返回该列的那个些值 请帮助我如何在mysql中执行此操作。使用逗号拆分输入字符串,并从每个子字符串中生成一个FIND\u in\u SET表达式,并将它们与或组合 以下是如何在PHP中为任意数量的输入字符串编写代码: $skill_array = array(); foreach (explode(',', $skills) as

我得到了一条像下面这样的线

'.NET Framework','JAVA J2EE'
现在我需要用一个列Skillset检查上面的任何一个是否存在于该列中,并且需要返回该列的那个些值


请帮助我如何在mysql中执行此操作。

使用逗号拆分输入字符串,并从每个子字符串中生成一个FIND\u in\u SET表达式,并将它们与或组合

以下是如何在PHP中为任意数量的输入字符串编写代码:

$skill_array = array();
foreach (explode(',', $skills) as $skill) {
    $skill_array[] = 'FIND_IN_SET("' . $skill . '")';
}
$sql = 'SELECT * FROM table WHERE ' . implode(' OR ', $skill_array);

在做了一些研发工作后,我找到了一个解决方案。我喜欢如下:

SELECT *, skillset FROM tresume_mas WHERE skillset REGEXP '.NET Framework|JAVA J2EE';

那么上面字符串中的两个值都出现在您的列中了吗?您不知道如何使用“Like”吗?我尝试使用in并在_集中查找_。但是这些将返回与字符串部分(如“.NET Framework”或“JAVA J2EE”)非常匹配的列值。但它不会返回值为“.NET Framework”、“C”、“JAVA J2EE”的列,J2ME'。我还需要获取这些值。@Ravinder我知道Like在我的情况下不会有用。如果可以使用Like进行此操作,请发布查询。我认为Like是检查列是否会预设一个Like值。但这里的要求不同。您确实应该避免使用带有逗号分隔的值列表的列。使用多对多关系表。它适用于任何数字。只需为每一个添加更多或更多的表达式。在循环中执行。在创建SQL的程序中编写for循环。我使用CallableStatement将字符串传递给SP。如果该值不为null,我将把它连接到SP中的查询。您可以在存储过程中编写WHILE循环,以拆分逗号上的字符串。它比PHP或Python等脚本语言更复杂,因为它没有内置函数,但您可以做到。我建议你用谷歌搜索一下。正则表达式可以识别元字符,就像你包含的竖条一样。句点字符是匹配任何单个字符的元字符。要搜索literal.NET而不匹配其他字符串(如xNET),需要用反斜杠“\.NET”转义该点。还有几个其他的元字符需要转义,以保证这种方法能够工作。
SELECT *, skillset FROM tresume_mas WHERE skillset REGEXP '.NET Framework|JAVA J2EE';