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数据库中~和like和ilike的区别

打通PostgreSql(pgsql)的正则匹配: like, similar to, ~。 以及与 mysql 正则匹配的区别。

缺少模糊字符串匹配扩展 pgadmin

postgresql----LIKE和SIMILAR TO

正则表达式学习

字符串匹配(KMP)算法及Java实现