如何在一行中使用 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[])
在我的网络应用程序中,以下缩写允许我输入一个值并在应用程序中选择其类型,例如: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[])