2009-06-30 13 views
2

たとえば、文字列(英語 - "A"、 "B") "AB1234"を含む列があり、それを文字列 "AB1234"(ロシア語の "A"、 "B" )、 例えば。 これを実現する組み込み関数はありますか?文字列を書いた表現で比較することは可能でしょうか?

私が見つけた最も良い方法は、必要なシンボルをすべて列挙するTranslate funcを使うことです。

+0

+1、素敵なリマインダー;-) – DCookie

+0

@DCookie:ロシアでは、ナンバープレートのラテン文字とキリル文字の両方に共通の12文字しか使用しません。自動車のデータベースではよくある問題です。 – Quassnoi

答えて

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') 
関連する問題