Postgresql字符串匹配在哪里
Posted
技术标签:
【中文标题】Postgresql字符串匹配在哪里【英文标题】:Postgres SQL string matching in where 【发布时间】:2019-01-22 17:19:16 【问题描述】:为以下内容编写 SQL 查询 (postgres) 的最简单方法是什么: 我有一个地址表,其中有一个街道号码列。可以包含数字和字母。如果参数是“3”,我想返回值以 3 开头的行,后跟不是数字的值。例如,街道编号值为 3、3A、3 A 但不是 33 的行。
【问题讨论】:
顺便说一句,您的问题实际上违反了 SO 的规则。请检查help on asking questions、What topics can I ask about here、What types of questions should I avoid asking?、How to ask a good question、How to create a Minimal, Complete, and Verifiable example 和Stack Overflow question checklist。 【参考方案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 所以试着更好地描述你的情况,我会尽力帮助你。以上是关于Postgresql字符串匹配在哪里的主要内容,如果未能解决你的问题,请参考以下文章
打通PostgreSql(pgsql)的正则匹配: like, similar to, ~。 以及与 mysql 正则匹配的区别。