PostgreSQL简单SELECT语句加WHERE条件无结果(新手求助)
字段值含不可见字符:login字段里的内容可能看着是
admin,实际带了空格、制表符或者全角字符(比如admin)。可以用select login, length(login) from users where login like '%admin%'查看字符长度,或者执行select * from users where trim(login) = 'admin'试试匹配。大小写不匹配:PostgreSQL默认对字符串大小写敏感,要是库里的login值是
Admin、ADMIN这类,用小写'admin'查询肯定没结果。可以试试select * from users where lower(login) = 'admin'验证。数据类型不兼容:先确认login字段的类型,要是它不是文本类型(比如整数、UUID),用字符串
'admin'匹配自然没结果。执行select column_name, data_type from information_schema.columns where table_name = 'users' and column_name = 'login'就能看到字段类型。客户端显示问题:有时候Pgadmin4可能存在显示bug,换psql命令行执行同样的查询语句,确认是不是真的没有结果。
行级安全策略限制:如果表设置了行级安全规则,可能会过滤掉符合条件的行,导致查询无结果,可以检查下表的行级安全配置。
注意:你之前去掉引号的操作是错误的——login是字符串类型的话,去掉引号PostgreSQL会把它当成列名,要么报错要么返回空,完全起不到匹配值的作用。
内容的提问来源于stack exchange,提问作者Саня Васиев

