将带有CSV的varchar参数转换为postgres的列值

时间:2016-03-14 15:40:18

标签: postgresql plpgsql

我有一个postgres查询,其中一个输入参数类型为varchar。

该参数的值用于where子句。

到目前为止,只有单个值被发送到查询,但现在我们需要发送多个值,以便它们可以与IN子句一起使用。

此前

  value='abc'.

  where data=value.//current usage

现在

  value='abc,def,ghk'.

  where data in (value)//intended usage

我尝试了许多方法,即提供价值

  value='abc','def','ghk'

或者

  value="abc","def","ghk" etc.

但是没有任何工作,并且查询没有返回任何结果,尽管有一些匹配的数据可用。如果我直接在IN子句中提供值,我会看到数据。

我想我应该以某种方式将逗号分隔的字符串参数拆分为多个值,但我不知道如何做到这一点。

请注意其Postgres DB。

1 个答案:

答案 0 :(得分:3)

您可以尝试将输入字符串拆分为数组。这样的事情:

where data = ANY(string_to_array('abc,def,ghk',','))