有人可以向我解释为什么 postgresql 中的这种比较没有按照我想要的方式工作吗?
所以我有一个名为 customer 的数据库,它包含 customerid、firstname、lastname、phone 和 city 列。这些列中的每一列都是一个 Character(50)。我只想找到来自某个城市的客户,并运行多个查询试图弄清楚如何选择某个城市。我觉得这将是一个简单的答案,但我对 sql 查询还很陌生。
我运行的第一个查询是这个
SELECT *
FROM customer c
WHERE c.city = 'Denver'
此查询未返回任何结果,我也尝试了 LIKE、ILIKE 似乎没有任何效果我什至将其从 character(50) 更改为 character varying 但仍然没有结果.. 不确定我在这里做错了什么
最佳答案
因为 character
将所有值填充到定义的长度。所以 'Denver'
存储为 'Denver '
Values of type character are physically padded with spaces to the specified width n, and are stored and displayed that way
SQL 标准就是这样定义这种数据类型的。这是一个古老的遗留下来的。
简而言之:从不使用字符
。使用 varchar
总是更好(基本上每个 SQL 数据库都是如此 - 对于 Postgres 更是如此)。
关于sql - Postgres 字符 (50) 与 'some string' 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777677/