sql - Postgresql 正则表达式搜索单词不区分大小写并忽略变音符号

标签 sql regex string postgresql

在我的移动表中,我必须匹配所有包含单词的描述值:'depósito'

它应该不区分大小写并且忽略变音符号,因为可以是:

Deposito
DEPOSITO
deposito
DEPÓSITO

etc,在description 句子的任何部分。

我该怎么做?

最佳答案

不区分大小写很容易,通过使用正则表达式匹配运算符 ~*(而不是 ~)。

说到变音符号,我不确定是否有标准方法。您可能需要列出变化。

此外,由于您正在搜索整个单词,因此最好使用单词边界来分隔它:\y\\y 取决于数据库设置 standard_conforming_strings 已关闭。

考虑:

description ~* '\ydep[oó]sito\y'

关于变音符号的注意事项:文档提到 an extension called unaccent可以用来去除重音。安装和设置后,您可以执行以下操作:

unaccent(description) ~* '\ydeposito\y'

关于sql - Postgresql 正则表达式搜索单词不区分大小写并忽略变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58332071/

相关文章:

jquery - JQuery 中的字符串比较?

sql - 需要查询帮助

php - Laravel 使用 insert() 和 convert() 绑定(bind)参数

SQL 子查询 COUNT CASE

css - RegEx 搜索所有包含颜色代码的 CSS 行 |崇高文本 3

string - Pandas 数据框用NaN替换空白

mysql - 基于 SQL (BigQuery) 中的多个列返回许多小数据样本

python - 我怀疑 re.match 弄乱了控制流

ios - iOS 中密码字段的字母数字验证

c# - Base64 字符串抛出无效字符错误