postgresql SELECT 错误“错误:布尔类型的输入语法无效:”

问题描述 投票:0回答:1

尝试在表中查询“数字”数据类型,但收到“无效类型布尔值”错误

results for 'mttnsubad' column when select * limit 100(https://i.stack.imgur.com/CCgkD.png)

select sum(clicks) 
from public.z_twitter
where mttnsubad like '%3456962%'
or '%3456963%'
or raw_placement_id in ( 495465782,495465869);

error

sql postgresql boolean numeric
1个回答
0
投票

查询中第二个

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;

它将返回正确的结果。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.