如何在一行中使用 convert、in 和 split 条件

How to use convert,in,and split conditions in one line

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

在这种情况下,我创建了一个变量 :grades 作为 varchar(你会明白我为什么选择它作为 varchar)

老师想知道谁的成绩是 2 或 3,也许更多

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

所以我生成了以下代码来做到这一点!

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

这显然行不通,我认为这是因为它拆分为 table 而不是字符串。我怎样才能使这个表达式起作用?

不要拆分成一个table,将它转换成一个数组,然后对数组使用= any运算符。

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

如果出于某种奇怪的原因,您的 "web app" 不允许使用 ::int[] 表示法,您可以使用 cast() 表达式:

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