为什么这个SQL查询会出现语法错误?

时间:2015-09-06 13:13:24

标签: sql postgresql

SELECT * 
FROM debates
WHERE assertion LIKE '%inspiration%' OR '%X%'
  

PG :: InvalidTextRepresentation:错误:boolean类型的输入语法无效:“%x%”LINE 1:... FROM辩论WHERE断言LIKE'%灵感%'或'%x%'^

适用于sqlite

2 个答案:

答案 0 :(得分:3)

您需要明确指定列,如:

SELECT *
FROM debates
WHERE assertion LIKE '%inspiration%' 
   OR assertion LIKE '%X%'

您也可以尝试:

SELECT  * 
FROM debates t
JOIN
(
    SELECT '%inspiration%' Col
    UNION  ALL
    SELECT '%X%'
) List 
ON t.assertion LIKE List.Col

答案 1 :(得分:1)

or连接布尔表达式。字符串常量不是布尔表达式。

这是标准SQL(对于以这种方式使用or的大多数语言都是通用的)。答案很简单:

where assertion like '%inspiration%' or assertion like '%x%'

或使用正则表达式:

where assertion ~ 'inspiration|x'