Je ne suis pas d'accord, COLLATE existe, mais on ne l'utilise pas comme ça
Par exemple
1 2
| CREATE TABLE users (
NAME VARCHAR(50) CHARACTER SET ISO8859_1 COLLATE FR_FR_CI_AI --- |
ORDER BY LASTNAME COLLATE FR_CA, FIRSTNAME COLLATE FR_CA
1 2 3
| WHERE LASTNAME COLLATE FR_CA = :lastnametosearch
--
WHERE UPPER (LAST_NAME COLLATE SV_SV) = 'PAULSEN'; |
Et encore, cela va dépendre de l'encodage de la base de données qui devra être ISO8859_1 ou à tout le moins la colonne (N.B. Je n'ai jamais essayé un COLLATE dans ce cas)
de plus une adresse mail, à ma connaissance, n'a pas de caractère accentué
Pour ce qui est du SQL
1 2
| select distinct right(lower(BAS_ADR),char_length(BAS_ADR)-(position('@'in BAS_ADR))))
from MAIL_BASE |
devrait faire l'affaire
mais je préfère
1 2
| select DISTINCT substring(lower(email) FROM position('@' IN email)+1) from clients
where position('@' IN email)>0 --permettant (en partie) de sauter les erreurs d'adresses |
ou
1 2
| select DISTINCT substring(lower(email) FROM position('@' IN email)+1) from clients
where where Email containing '@' --permettant (en partie) de sauter les erreurs d'adresses |
pour vérifier complètement une adresse on utilisera SIMILAR TO ou LIKE
1 2
| select DISTINCT substring(lower(email) FROM position('@' IN email)+1) from clients
where Email SIMILAR TO '_%@_%._%' -- à améliorer |
Partager