【问题标题】:Postgres SQL string matching in wherePostgresql字符串匹配在哪里
【发布时间】:2019-01-22 17:19:16
【问题描述】:

为以下内容编写 SQL 查询 (postgres) 的最简单方法是什么: 我有一个地址表,其中有一个街道号码列。可以包含数字和字母。如果参数是“3”,我想返回值以 3 开头的行,后跟不是数字的值。例如,街道编号值为 3、3A、3 A 但不是 33 的行。

【问题讨论】:

标签: sql regex postgresql


【解决方案1】:

您可以使用matching using regular expressions

查询可能如下所示:

SELECT * FROM table WHERE streetnumber ~ '3[^0-9]*'

正则表达式模式3[^0-9]* 匹配“数字 3 后跟零个或多个非数字字符”。

【讨论】:

  • 对于给定的示例,更好的正则表达式是3\s*A\s* 表示中间有零个或多个空格。
  • 谢谢,你也不知道我可以如何参数化它,在你的例子中,这三个如何可以用 :addressNumber 替换?另外我认为 Dawid 写的是我想确保空格匹配。
  • @tyronecopex 好吧,参数化取决于您构建查询的方式,即要使用的值存储在哪里,使用什么语言/技术来构建查询。
  • @coladict 我的正则表达式将匹配他的问题中提到的所有案例 OP。您的正则表达式不匹配,例如“3A”。我会把它留给 OP 来选择更适合他的需求。
  • @tyronecopex 所以试着更好地描述你的情况,我会尽力帮助你。
猜你喜欢
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
相关资源
最近更新 更多