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

时间:2013-01-30 00:27:50

标签: sql postgresql

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

例如,如果我搜索stack's,我怎样才能让它与stacksstack's匹配?

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

SELECT * FROM table WHERE <what-do-i-do> ilike 'stacks'

2 个答案:

答案 0 :(得分:4)

执行此操作的一种方法是使用translate:

select *
from table
where translate(lower(WhatIDo), translate(lower(WhatIDo), 'abcdefghijklmnopqrstuvwxyz', ''), '') = 'stacks'

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

答案 1 :(得分:0)

您可以尝试使用通配符('%')替换所有非字母数字字符的实例。在您的示例中:

SELECT * FROM table WHERE data like 'stack%s'