我运行类似的查询,但得到不同的
当运行这些
select * from source_aliases where source_alias = 'store'
select * from source_aliases where lower(source_alias) = lower('store')
select * from source_aliases where source_alias like 'store'
there is no result
但是当运行这些
select * from source_aliases where source_alias like '%store%'
select * from source_aliases where upper(source_alias) = upper('store')
select * from source_aliases where source_alias ilike 'store'
select * from source_aliases where convert_to(source_alias, 'UTF8') = 'store'
我可以得到行
参数:PostgreSQL 10.23,
的原因select * from source_aliases where source_alias = 'store'
不工作
以下是我认为的解决方案!!
-
区分大小写:根据数据库配置,比较运算符
=
可能区分大小写。例如,如果source_aliases
表中source_alias
的值存储为'Store'
,则由于大小写差异,查询select * from source_aliases where source_alias = 'store'
将无法匹配任何行。 -
前导/尾随空格:如果
source_alias
的值中有前导或尾随空格,则查询select * from source_aliases where source_alias = 'store'
将不匹配任何行。在这种情况下,使用带有通配符的like操作符,例如select * from source_aliases where source_alias like '%store%'
,将匹配source_alias
值中出现'store'的任何行。 -
数据类型不匹配:如果
source_alias
列的数据类型不是字符串类型,则查询select * from source_aliases where source_alias = 'store'
将不匹配任何行。在这种情况下,使用类型转换函数(如convert_to(source_alias, 'UTF8')
)可以帮助确保在进行比较之前数据类型匹配。