值未在SQL查询中返回应有的值

时间:2018-10-09 09:36:27

标签: sql postgresql

我正在名为storelocation2的下表上运行一个简单的PostgreSQL查询:

store_name   | brand  | city   | store_id
----------------------------------------------
MS Products  | SAMSUNG|Gurugram|5611
Ajay Electric| SAMSUNG|Gurugram|5611
Vijay Sales  | SAMSUNG|Gurugram|5611

运行此命令后:

postgres=> \d storelocation2;

返回以下表格详细信息:

   Column    |         Type          | Modifiers
-------------+-----------------------+-----------
store_name   | character varying(20) |
brand        | character varying(20) |
city         | character varying(20) |
store_id     | numeric               |

查询 现在,当我运行select语句时:

select city 
from storelocation2 where 
brand='SAMSUNG';

以下结果:

city
------
(0 rows)

这是错误的。

2 个答案:

答案 0 :(得分:1)

问题在于您看到的SAMSUNG并不是您所得到的。通常是由于字符串开头或结尾出现意外字符。

最常见的是空格,可通过以下方式处理:

where trim(brand)= 'SAMSUNG'

接下来是其他隐藏的字符,您可以通过以下方式找到它们:

where brand like '%SAMSUNG%'

然后在中间存在字符:

where brand ~ '.*S.*A.*M.*S.*U.*N.*G.*'

根据最终匹配的内容,您可以调查列中的不寻常字符。

答案 1 :(得分:0)

尽管已在注释中说过,但仍可以通过uisng trim函数尝试以下操作

select city 
from storelocation2 where 
trim(brand)='SAMSUNG';