我正在使用 PostgreSQL,想知道您是否可以让通配符保留其值。

所以例如说我有

select * from tableOne where field like ‘_DEF_’;

有没有办法让第一个和最后一个通配符完全相同?

因此,一个示例匹配结果可能是:ADEFA 或 ZDEFZ。

最佳答案

您可以使用带有反向引用的正则表达式:

select *
from some_table
where some_column ~* '^(.)DEF(\1)$'
^(.)DEF(\1)$ 表示:开头的某个字符后跟 DEF 后跟第一个字符必须出现在字符串的末尾。
() 定义了一个组,\1 引用了第一个组(在这个例子中是输入序列中的第一个字符)

SQLFiddle 示例:http://sqlfiddle.com/#!15/d4c4d/1

关于postgresql - 具有相同通配符的模式匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29033022/

10-15 18:47