仅使用字母数字字符进行Postgresql搜索

spy*_*3rr 6 sql postgresql

从搜索词中删除非字母数字字符非常简单,但是如何将其与数据库中值的非字母数字字符进行比较?

例如,如果我搜索stack's,我怎么能让它匹配stacksstack's

我需要对what-do-i-do下面的变量做些什么来实现上述目标?

SELECT * FROM table WHERE <what-do-i-do> ilike 'stacks'
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 4

一种方法是使用翻译:

select *
from table
where translate(lower(WhatIDo), translate(lower(WhatIDo), 'abcdefghijklmnopqrstuvwxyz', ''), '') = 'stacks'
Run Code Online (Sandbox Code Playgroud)

内部翻译查找所有非字母字符。然后外部将它们从字符串中删除。

  • 谢谢,成功了!当我等待时,我也使用 regex_replace 让它工作: `regexp_replace(whatdoido, '[^0-9a-zA-Z ]', '') ilike 'stacks'` (4认同)