在Postgresql LIKE中使用下划线

pao*_*lov 0 sql postgresql padding sqldatatypes sql-like

我正在尝试在postgresql LIKE中使用下划线执行对特定数据模式的搜索,但它似乎不起作用。

客户端的版本为9.2.21,服务器的版本为9.4.12。

例如,

select * 
from table1 
where f1 like '___'
Run Code Online (Sandbox Code Playgroud)

即使表中明显存在匹配项,也不会返回任何内容(即,存在具有匹配值的数据),例如f1 = '123'

我想知道是否有系统配置/参数会影响此行为?

还是可以用其他方式解释一下?

a_h*_*ame 6

存储在定义为的列中的值char(9)将用空格填充到定义的长度。因此,当您存储'123'在该列中时,它实际上存储'123 '

您需要修剪那些尾随的空白:

where trim(f1) = '___'
Run Code Online (Sandbox Code Playgroud)

但是您应该char完全避免使用该类型。它没有提供任何优势,varchar但是有几个缺点(您刚刚发现了一个)