Gewusst wie: vergleichen von Unicode-Zeichen in SQL server?
Hallo, ich bin auf der Suche nach allen Zeilen in meiner Datenbank (SQL Server), die haben Charakter é in Ihrem text durch ausführen der folgenden Abfragen.
SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\xE9]%',question) > 0;
SELECT COUNT(*) FROM t_question WHERE patindex(N'%[\u00E9]%',question) > 0;
Fand ich aber zwei Probleme: (a) Beide von Ihnen sind der Rückgabe unterschiedliche Anzahl von Zeilen und (b) Sie sind der Rückgabe Zeilen die nicht dem angegebenen Zeichen.
Ist der Weg, ich bin der Konstruktion des regulären Ausdrucks und vergleichen Sie die Unicode-richtig?
EDIT:
Spalte für die Frage ist gespeichert Datentyp nvarchar
.
Die folgende Abfrage liefert das richtige Ergebnis wenn.
SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%';
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht
SELECT COUNT(*) FROM t_question WHERE question LIKE N'%é%'
?NB:
Like
undpatindex
tun nicht akzeptieren reguläre Ausdrücke.In der SQL Server-pattern syntax
[\xE9]
bedeutet übereinstimmung mit jedem einzelnen Zeichen innerhalb des angegebenen Satzes. also match\
,x
,E
oder9
. Also jeder der die folgenden Zeichenfolgen auf übereinstimmung mit diesem Muster.WHERE patindex(N'%' + NCHAR(0xE9) + '%',question) > 0
wenn aus irgendeinem Grund Sie nicht möchten, benutzen Sie einfach die wörtlicheWHERE patindex(N'%é%',question) > 0
Dies könnte helfen, zu Sortierungen:
http://msdn.microsoft.com/en-us/library/ms143508(SQL.90).aspx
http://ask.sqlservercentral.com/questions/1598/understanding-patindex-query