通过书面表示比较字符串 - 这可能吗?

时间:2009-06-30 14:57:21

标签: sql oracle string

例如我有一个包含字符串的列(英文 - “A”,“B”)“AB1234”,我想将它与字符串“AB1234”进行比较(俄文“A”,“B” “ ), 例如。 有没有内置功能来实现这一目标?

我找到的最好方法是使用Translate func,其中列举了所有需要的符号。

1 个答案:

答案 0 :(得分:2)

您正在寻找一个功能LOOKS LIKE

不幸的是SQL中没有这样的功能。

相反,您可以创建一个基于函数的索引,使用TRANSLATE将每个字符串强制转换为公分母,并搜索字符串:

CREATE INDEX ix_mytable_transliterate ON (TRANSLATE(UPPER(str), 'АВЕКМНОРСТУХ', 'AВEKMHOPCTYX'))

SELECT  *
FROM    mytable
WHERE   TRANSLATE(UPPER(str), 'АВЕКМНОРСТУХ', 'AВEKMHOPCTYX') = TRANSLATE(UPPER('весна на танке'), 'АВЕКМНОРСТУХ', 'AВEKMHOPCTYX')