如何在一行中使用转换,输入和分割条件

时间:2018-08-28 09:32:40

标签: sql postgresql postgresql-9.3

在我的Web应用程序中,以下缩写允许我输入值并在应用程序中选择其类型,例如:input

在这种情况下,我创建了一个变量:grades作为varchar(您将理解为什么选择它为varchar)

老师想知道谁获得2或3年级,甚至更高的分数

例如2,3-她想知道谁的成绩为2,谁的成绩为3

所以我制作了以下代码来做到这一点!

 where gc.idx in (cast(regexp_split_to_table(:grades, ',')) as integer)

这显然行不通,我认为那是因为这会拆分为一个表而不是一个字符串。如何使该表达式起作用?

1 个答案:

答案 0 :(得分:1)

请勿拆分为表格,将其转换为数组,并在数组中使用= any运算符。

where gc.idx = any (string_to_array(:grades, ',')::int[])

如果出于某种奇怪的原因,您的“网络应用”不允许使用::int[]表示法,则可以使用cast()表达式:

where gc.idx = any (cast(string_to_array(:grades, ',') as int[])