5

Sql-Server 2008 R2 Sortierung ist Chinese_Simplified_Pinyin_100_CI_AS. Wenn ichZwei Zeichenketten vergleichen gleich mit '=', aber nicht 'ähnlich' vergleichen

select 1 where N'⑦' = N'7' 

es Ausgabe 1, aber wenn ich den Anbieter wechseln zu like

select 1 where N'⑦' like N'7' 

es wird nicht ausgegeben nichts.

Warum ist like Operator so komisch? Habe ich etwas verpasst?

+0

'N'⑦ 'wie N'7%' und' N'7 'wie N'⑦%' beide Ergebnisse zurück. Melden Sie es bei Connect an. Scheint nicht wie erwartetes Verhalten zu mir. –

+0

unter dem Link kann Ihnen helfen. scheint wie ein bekanntes Problem https://connect.microsoft.com/SQLServer/feedback/details/703959/search-with-like-not-working-as-expected-with-collation-slovenian-100-ci-as – PraveenVenu

+0

Don Ich sehe nicht, wie das Problem mit dem Verbinden zusammenhängt (abgesehen davon, dass es ein anderes Problem mit "LIKE" ist) –

Antwort

1

Es scheint ein Fehler zu sein. LIKE gegen ein Muster ohne Platzhalter sollte immer das gleiche zurückgeben, das = zurückgibt.

Andere können dieses Verhalten durch die folgende Abfrage ausgeführt wird:

SELECT 
    CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS = N'7' THEN 'Y' ELSE 'N' END, 
    CASE WHEN N'⑦' COLLATE Chinese_Simplified_Pinyin_100_CI_AS LIKE N'7' THEN 'Y' ELSE 'N' END 
-- Y N 

Ich sehe, dass Sie reported it on Microsoft Connect.