【问题标题】:Postgresql : Search field contain tab character. (With LIKE)Postgresql:搜索字段包含制表符。 (带赞)
【发布时间】:2014-12-23 08:49:17
【问题描述】:

我正在寻找如何检查任何字段是否包含 TAB 字符。

阅读this post后,我尝试使用这个命令:

SELECT id FROM account WHERE description LIKE '%\t%';

但它会返回所有包含“t”字符的字段。

你有什么办法可以表示TAB字符吗?

【问题讨论】:

  • 或者你可以使用十六进制值:0x09 :D...

标签: postgresql


【解决方案1】:

在 SQL 中,没有像 \t 这样的字符“转义”。您可以为此使用chr() 函数:

select id
from account
where description LIKE '%'||chr(9)||'%'

在这种情况下我更喜欢strpos 函数,因为我认为它使意图更清晰

select id
from account
where strpos(description, chr(9)) > 0

【讨论】:

    【解决方案2】:

    您必须使用文字制表符,

     SELECT id FROM account WHERE description LIKE '%   %';
    

    在 psql 中键入 ctrl-V 然后 TAB 进入选项卡。在其他环境中,还有其他方法可以输入文字标签。

    您也可以使用转义字符串语法:e'%\t%',或八进制转义 e'%\011%'

    【讨论】:

      【解决方案3】:

      我参加这个聚会很晚,但今天研究了一下,我发现你也可以使用正则表达式。

      SELECT id FROM account WHERE description ~ '\t';
      

      【讨论】:

      • 确实可以,postgresql 在内部将 LIKE 表达式转换为正则表达式。该问题要求使用 LIKE 提供解决方案,但接受的答案使用不同的方法。
      • 如果您有其他编码人员可能会打开文件并将制表符转换为空格,那么在查询中使用文字制表符是很危险的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 2019-05-17
      • 2013-06-26
      • 2013-11-10
      相关资源
      最近更新 更多