WHERE条件中不期望的结果



我运行类似的查询,但得到不同的

当运行这些


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'

不工作

以下是我认为的解决方案!!

  1. 区分大小写:根据数据库配置,比较运算符=可能区分大小写。例如,如果source_aliases表中source_alias的值存储为'Store',则由于大小写差异,查询select * from source_aliases where source_alias = 'store'将无法匹配任何行。

  2. 前导/尾随空格:如果source_alias的值中有前导或尾随空格,则查询select * from source_aliases where source_alias = 'store'将不匹配任何行。在这种情况下,使用带有通配符的like操作符,例如select * from source_aliases where source_alias like '%store%',将匹配source_alias值中出现'store'的任何行。

  3. 数据类型不匹配:如果source_alias列的数据类型不是字符串类型,则查询select * from source_aliases where source_alias = 'store'将不匹配任何行。在这种情况下,使用类型转换函数(如convert_to(source_alias, 'UTF8'))可以帮助确保在进行比较之前数据类型匹配。

相关内容

  • 没有找到相关文章

最新更新