mysql选择csv字符串中的where字段

时间:2010-11-24 09:55:25

标签: mysql csv

我想从一个表中选择一个字段在给定的csv字符串中传递给存储过程。

最快的方法是什么?我应该将值插入临时表并加入到该表中吗?或者有一种方法可以用一个陈述来做到这一点吗?

由于

2 个答案:

答案 0 :(得分:1)

新答案 -

你必须做下面这样的事情。 我假设您的csv字符串将在下面的变量@str中给出。否则,您需要确保您的字符串(或数组字符串)应该具有每个元素的单引号格式 -

set @str = "'some1','some2','some3'";
set @qry1 = CONCAT('select * from testing where col1 in (',@str,')');

prepare stmt1 from @qry1;
execute stmt1;
deallocate prepare stmt1; 

OLD ANSWER -

我假设您将csv文件路径传递给存储过程并读取该存储过程中csv中的行。因此,基本上您可以将所有这些csv字段值存储在临时表中,并使用IN -

编写查询
select * from sourceTable 
where fieldValue in (select csvFieldValue from #temptable)

答案 1 :(得分:0)

做了一些搜索并找到了一个很好的答案。:)

使用MySql的字符串函数FIND_IN_SET

使用示例:

SET @csvStr = "val1,val2,val3";

SELECT Col1
  FROM Table1
 WHERE FIND_IN_SET(Col2, @csvStr) > 0;

我使用“新答案”和“旧答案”编辑了当前答案,指出新答案会将您的系统打开到SQL注入漏洞。