我试图执行一个SQL语句,其中where子句执行类似的操作:
WHERE col LIKE ANY (values...)
根据HSQLDB documentation 似乎对我来说我应该能够做到:
condition
{ ...
| value [NOT] LIKE value [ESCAPE] value }
value
[+ | -] { term [{ + | - | * | / | || } term]
| ( condition )
| function ( [parameter] [,...] )
| selectStatement giving one value
| {ANY|ALL} (selectStatement giving single column)
然而,这似乎不起作用。
我可以执行此操作:
SELECT * FROM table WHERE col LIKE (selectStatement giving 1 column with single value)
但是这些都会给我一个错误:
SELECT * FROM table WHERE col LIKE (selectStatement giving 1 column with multiple values)
-> cardinality violation
SELECT * FROM table WHERE col LIKE ANY (selectStatement giving 1 column with single value)
SELECT * FROM table WHERE col LIKE ANY (selectStatement giving 1 column with multiple values)
-> unexpected token: SELECT
你能帮我理解我做错了什么吗? 这不支持,还是我误解了文档?
谢谢!
答案 0 :(得分:0)
根据您希望实现的目标,您可以使用以下内容:
此查询使用子查询返回的值进行LIKE比较。该值通常具有转义字符,例如super%
,它匹配以super
开头的所有单词:
SELECT * FROM table WHERE col LIKE (selectStatement giving 1 column with single value)
此查询使用子查询返回的值作为列表。将每个列表值与col值进行比较,并在找到第一个完全匹配时,结果为true。此类查询用于返回表中具有值的子集,该值位于子查询返回的列表中:
SELECT * FROM table WHERE col = ANY (selectStatement giving 1 column with multiple values)