2009-06-30 8 views
2

Par exemple, j'ai une colonne qui contient une chaîne (en anglais - "A", "B") "AB1234" et je voudrais le comparer à la chaîne "AB1234" (en russe "A", "B"), par exemple. Y at-il une fonction intégrée pour y parvenir?Comparer les chaînes par leur représentation écrite - est-ce possible?

Le meilleur moyen que j'ai trouvé est d'utiliser la fonction Traduire où j'énumère tous les symboles nécessaires.

+0

+1, beau rappel que le monde est pas tous anglais ;-) – DCookie

+0

@DCookie: nous en Russie n'utilisons que les 12 lettres communes aux alphabets latin et cyrillique pour les plaques d'immatriculation. C'est un problème assez commun pour les bases de données automobiles. – Quassnoi

Répondre

2

Vous recherchez une fonction LOOKS LIKE.

Malheureusement, cette fonction n'existe pas dans SQL.

Au lieu de cela, vous pouvez créer un index basé sur une fonction qui jette chaque chaîne à un dénominateur commun à l'aide TRANSLATE et rechercher la chaîne:

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

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