我正在使用PostgreSQL并想知道你是否可以使用通配符保留其值。
例如说我有
select * from tableOne where field like ‘_DEF_’;
有没有办法让第一个和最后一个通配符成为完全相同的字符?
所以匹配结果的示例可能是:ADEFA或ZDEFZ。
答案 0 :(得分:4)
您可以使用带有反向引用的正则表达式:
select *
from some_table
where some_column ~* '^(.)DEF(\1)$'
^(.)DEF(\1)$
表示:开头的一些字符跟在DEF
之后,第一个字符必须出现在字符串的末尾。
()
定义一个组,\1
引用第一个组(在此示例中是输入序列中的第一个字符)
SQLFiddle示例:http://sqlfiddle.com/#!15/d4c4d/1
答案 1 :(得分:0)
使用正则表达式:
with test as (
select 'xABa' as foo
union select 'xABx'
union select 'xJBx'
)
select * from test
where foo ~* E'^(.)AB\\1$'
输出:
foo
------
xABx
(1 row)