如何在Postgresql中转义下划线

时间:2016-06-28 19:36:14

标签: postgresql wildcard postgresql-9.3

在Postgresql中搜索下划线时,字符 override func numberOfSectionsInTableView(tableView: UITableView) -> Int { if array.count > 0 { self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine return array.count } else { let messageLabel = UILabel(frame: CGRect(x: 20.0, y: 0, width: self.tableView.bounds.size.width - 40.0, height: self.tableView.bounds.size.height)) messageLabel.text = "This is the message I would like to display when there is nothing returned from my model" messageLabel.numberOfLines = 0 messageLabel.textAlignment = NSTextAlignment.Center messageLabel.sizeToFit() tableView.backgroundView = messageLabel self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None } return 0 } 的字面使用不起作用。例如,如果您希望在所有表中搜索以_结尾的任何列,例如更改日志或活动信息,例如_byupdated_by等,以下查询几乎可以运作:

reviewed_by

它基本上完全忽略下划线并返回,就像您搜索SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%_by' 一样。这在所有情况下都可能不是问题,但它有可能成为一个问题。如何搜索下划线?

2 个答案:

答案 0 :(得分:17)

您需要使用反斜杠来转义下划线。将示例查询更改为以下内容:

LIKE '%by'

答案 1 :(得分:3)

刚遇到同样的问题,单个反斜杠也不起作用。我在PostgreSQL社区找到了这个文档并且它有效:

  

正确的方法是使用反斜杠转义下划线。您   实际上必须在查询中写两个反斜杠:

     

选择*来自   foo哪里有像'%\\ _ baz'

     

第一个反斜杠引用了查询解析器的第二个反斜杠,所以   最终在系统内部的是%\ _ baz,然后是LIKE   函数知道如何处理它。

因此请使用以下内容:

SELECT table_name, column_name FROM information_schema.columns
WHERE column_name LIKE '%\\_by'

来源文档:https://www.postgresql.org/message-id/10965.962991238%40sss.pgh.pa.us