尝试在表中查询“数字”数据类型,但收到“无效类型布尔值”错误
select sum(clicks)
from public.z_twitter
where mttnsubad like '%3456962%'
or '%3456963%'
or raw_placement_id in ( 495465782,495465869);
查询中第二个
OR
条件的问题在于它不完整。条件 '%3456963%'
本身不是有效的布尔表达式。它应该与列名和比较运算符组合,类似于第一个 OR
条件。您只需将第二个 OR
条件更改为 mttnsubad LIKE '%3456963%'
即可使查询在语法上正确。
SELECT SUM(clicks)
FROM public.z_twitter
WHERE mttnsubad LIKE '%3456962%'
OR mttnsubad LIKE '%3456963%'
OR raw_placement_id IN (495465782, 495465869);
根据查询和/或数据,这可能会检索到不正确的结果。例如,考虑以下模式
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
department TEXT NOT NULL,
salary INTEGER NOT NULL,
years_of_service INTEGER NOT NULL
);
假设您想找到收入超过50000并且工作时间为5或6年的员工
如果您像这样构建查询:
SELECT * FROM employees
WHERE salary > 50000
AND years_of_service = 5
OR 6;
根据底层数据库,这可能会返回错误或返回所有收入超过 50000 的员工,无论其服务年限如何,因为这可以计算为布尔值 true。 你可以在这里尝试一下
如果你像这样构建它
SELECT * FROM employees
WHERE salary > 50000
AND years_of_service = 5
OR years_of_service = 6;
希望这有帮助!