5

Sql-Server 2008 R2 Sortowanie jest Chinese_Simplified_Pinyin_100_CI_AS. Gdy używamDwa ciągi porównać równe przy użyciu "=", ale nie w "jak" porównać

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

wyjście it 1, ale przy zmianie operatora like

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

przyzwyczajenie wyjście cokolwiek.

Dlaczego operator like działa tak dziwnie? Przegapiłem coś?

+0

'N'⑦ 'jak N'7%'' i 'N'7 'jak N'⑦%'' oba zwracają wyniki. Zgłoś to w Connect. Nie wydaje mi się oczekiwanym zachowaniem. –

+0

poniższy link może ci pomóc. Wygląda na znany 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 Zobacz, jak ten problem z połączeniem jest powiązany (z wyjątkiem innego problemu z 'LIKE') –

Odpowiedz

1

Wygląda na to, że jest błędem. LIKE w przypadku wzorca bez symboli wieloznacznych zawsze powinien zwracać tę samą wartość, która zwraca =.

Inni widzą ten problem wykonując następujące zapytanie:

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 

widzę, że reported it on Microsoft Connect.