我有一个查询:
SELECT (column LIKE '%string%') AS bool FROM table
它返回:
“缺少右括号”
为什么?
由于LIKE
操作符的原因,我们无法使用该DECODE
功能。我猜以下内容虽然丑陋,但与您正在寻找的内容相匹配:
SELECT
login,
CASE
WHEN login LIKE 'admin' THEN 1
ELSE 0
END
FROM users;
或者,使用类似布尔值:
SELECT
login,
CASE
WHEN login LIKE 'admin' THEN 'TRUE'
ELSE 'FALSE'
END
FROM users;
如果您正在使用LIKE
运算符,您希望%
在“admin”字符串中使用一些通配符,否则一个简单的相等就足够了。
你应该使用:
SELECT DECODE(login,'admin','TRUE','FALSE') as bool FROM users;
官方在 SQL 中没有布尔数据类型,在 Oracle 中也没有。
这样做的标准方法是使用 WHERE 子句:
select whatever
from your_table
where column LIKE '%string%';
如果您真的想要一列,则需要将字符串探针与 DECODE() 或 CASE() 结合使用。像这样...
select decode(instr(column, 'string'), 0, 'FALSE', 'TRUE') as bool
from your_table
... 或这个 ...
select case when column like '%string%' then 'TRUE' else 'FALSE' end as bool
from your_table
...或其他一些排列。
它返回 1 - 找到的字符串,否则返回 0:
SELECT LEAST(1,INSTR(login,'admin')) AS bool FROM users