Salut J'essaie de trouver toutes les lignes dans ma base de données (SQL Server) qui ont le caractère é dans leur texte en exécutant les requêtes suivantes.Comment comparer les caractères Unicode dans le serveur SQL?
SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\xE9]%',question) > 0;
SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\u00E9]%',question) > 0;
Mais j'ai trouvé deux problèmes: (a) Les deux d'entre eux reviennent nombre différent de lignes et (b) Ils sont le retour de lignes qui n'ont pas le caractère spécifié.
Est-ce que la façon dont je construis l'expression régulière et la comparaison de l'Unicode est correcte?
EDIT:
La colonne question est stockée en utilisant le type de données nvarchar
. La requête suivante donne cependant le résultat correct.
SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%';
Ainsi, la première est une correspondant à \, 0,0, E ou 9? Existe-t-il un moyen de spécifier réellement l'Unicode dans la requête? – rkg
@Ravi - Vous pouvez utiliser 'WHERE patindex (N '%' + NCHAR (0xE9) + '%', question)> 0' si pour une raison quelconque vous ne voulez pas simplement utiliser le littéral' WHERE patindex (N ' % é% ', question)> 0' –
Merci beaucoup Martin. Cela a vraiment aidé. J'avais l'impression que PATINDEX supporte les expressions régulières normales. – rkg