HSQL执行条件LIKE ANY

时间:2016-04-21 16:02:37

标签: sql hsqldb

我试图执行一个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

你能帮我理解我做错了什么吗? 这不支持,还是我误解了文档?

谢谢!

1 个答案:

答案 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)