Folgendes mir unerklärliches Verhalten stelle ich am MS-SQL-Server fest:
In der Tabelle mytable in der Spalte myCol (nvarchar) ist der Wert '010101'.
Ich frage die Datenbank mit folgender Query ab:
exec sp_executesql N'select * from mat where (m_matnr like @P1 )', N'@P1 nvarchar(50)', N'0101% ' ( = #$0400).
Die Abfrage muss mittels exec sp_...-Ausgeführt werden da sonst die Unicode-Zeichen überhaupt nicht durchkommen (anderes "Feature" von MS-SQL).
Nach meinen Verständnis sollte doch der obige Datensatz nicht als Ergebnis geliefert werden, da das Zeichen #$0400 ja nicht im String '010101' vorhanden ist. Kommt er aber!<br>
Wird statt #$0400 z.B. E ('0101%E') verwendet, so kommt der Datensatz nicht zurück.
Gibt es hier noch eine (versteckte) Einstellmöglichkeit um wirklich 100% Unicode-Verhalten beim MS-SQL-Server zu bekommen?
In der Tabelle mytable in der Spalte myCol (nvarchar) ist der Wert '010101'.
Ich frage die Datenbank mit folgender Query ab:
exec sp_executesql N'select * from mat where (m_matnr like @P1 )', N'@P1 nvarchar(50)', N'0101% ' ( = #$0400).
Die Abfrage muss mittels exec sp_...-Ausgeführt werden da sonst die Unicode-Zeichen überhaupt nicht durchkommen (anderes "Feature" von MS-SQL).
Nach meinen Verständnis sollte doch der obige Datensatz nicht als Ergebnis geliefert werden, da das Zeichen #$0400 ja nicht im String '010101' vorhanden ist. Kommt er aber!<br>
Wird statt #$0400 z.B. E ('0101%E') verwendet, so kommt der Datensatz nicht zurück.
Gibt es hier noch eine (versteckte) Einstellmöglichkeit um wirklich 100% Unicode-Verhalten beim MS-SQL-Server zu bekommen?
Comment