如何基于逗号分隔的值从数据库中获取数据

时间:2019-06-10 13:14:14

标签: mysql

如何编写MySQL查询,以基于运行时提供的逗号分隔值从数据库中获取数据? PS:忽略逗号分隔值的优先顺序。

我已经尝试过使用Like运算符,但是并没有给我准确的结果。还尝试了IN运算符,但根本不起作用。

SELECT * FROM Candidate_Table WHERE Key_Skills喜欢吗?和Key_Skills喜欢吗? AND Key_Skills喜欢吗?;

预期结果: 查询应得出与输入值匹配的准确值。 输入值:Java,C,HTML5

F_Name L_Name移动关键技能体验城市

---------- ---------- ---------- ---------- ------- ------------

Tim Johnson 5525365 C,Java,Python,HTML5 3年奥兰多

3 个答案:

答案 0 :(得分:0)

尝试

选择F_Name,L_Name,Mobile,concat(Key_Skills,“,”,Key_Skills),体验,城市
 来自候选表  按F_Name,L_Name,Mobile,Experience,City分组;

答案 1 :(得分:0)

您可以尝试将关键技能放在一个数组中,说出keyskills然后做

SELECT * from Candidate_Table where Key_Skills in (keyskills);

您可以将*替换为要显示的列,并按这些列进行分组

答案 2 :(得分:0)

这听起来像是Full Text Search的工作,您必须为FULLTEXT字段定义一个Key_Skills索引。这种索引使您可以进行这种搜索:

SELECT * FROM Candidate_table WHERE MATCH(Key_Skills) AGAINST('Java Python'  IN NATURAL LANGUAGE MODE)

结果将包括所有具有这些技能的候选人。还有一种模式,您可以进行更具体的搜索,例如,如果您希望所有具有Java和Python的候选人,但不包括那些具有PHP的候选人,则可以像在Google上那样进行BOOLEAN搜索。

SELECT * FROM Candidate_table WHERE MATCH(Key_Skills) AGAINST('+Java +Python -PHP'  IN BOOLEAN MODE)

您要做的就是使用提供的运算符排列搜索条件。以下是有关此示例的更多示例:https://www.w3resource.com/mysql/mysql-full-text-search-functions.php