Wiem, że jest późno, ale co tu się dzieje? będę oczekiwać żadnych wyników średnik przychodzi po 9 w ASCII:Porównanie stringów serwera SQL
select ascii(';') as semicolon, ascii('9') as nine where ';' < '9'
Wyniki:
semicolon nine
59 57
Wiem, że jest późno, ale co tu się dzieje? będę oczekiwać żadnych wyników średnik przychodzi po 9 w ASCII:Porównanie stringów serwera SQL
select ascii(';') as semicolon, ascii('9') as nine where ';' < '9'
Wyniki:
semicolon nine
59 57
Sortowanie i porównywanie danych znakowych w SQL Server jest określona przez punkty kodowe tylko z sortowania binarnych.
select ascii(';') as semicolon, ascii('9') as nine where ';' COLLATE Latin1_General_BIN < '9' COLLATE Latin1_General_BIN;
Z innych sortowania, zasad porównywania i sortowania kolejność jest zamówienie słowniku (znaki specjalne przed alfa), niezależnie od podstawowej sekwencji binarnej punkcie kodowym. Ponadto, sortowanie w systemie Windows stosuje się także do lingwistycznych reguł sortowania słów. Na przykład:
SELECT 1 WHERE 'coop' COLLATE SQL_Latin1_General_CP1_CI_AS < 'co-op' COLLATE SQL_Latin1_General_CP1_CI_AS;
SELECT 1 WHERE 'coop' COLLATE Latin1_General_CI_AS < 'co-op' COLLATE Latin1_General_CI_AS;
Przy użyciu operatora <
na sznurkach ISO, porównanie jest dokonywane za pomocą porządku leksykograficznego (czyli zamówienia będzie można znaleźć w słowniku.)
http://en.wikipedia.org/wiki/Lexicographical_order
trzeba by użyć funkcji ASCII()
w th e WHERE
klauzuli, aby Twoja sprawa była prawdziwa.
SELECT ASCII(';') AS semicolon,
ASCII('9') AS nine
WHERE ASCII(';') < ASCII('9')
ascii() miało pokazać, że średnik jest w rzeczywistości większy niż 9. Po prostu chcę wiedzieć, dlaczego "; Wartość '9' jest prawdziwa. –
Tak, ale dlaczego porównywanie łańcuchów daje inny wynik? –
Podczas używania operatora '<' na łańcuchach ISO, porównanie jest wykonywane przy użyciu kolejności leksykograficznej (tj. Kolejność, którą można znaleźć w słowniku). Zaktualizowałem moją odpowiedź, aby uwzględnić te informacje. http://pl.wikipedia.org/wiki/Lexicographical_order – Drenmi
Dzięki Dan, wiedziałem, że będzie to coś tak ezoterycznego. Krwawe mylenie i zaciemnianie, jeśli mnie pytasz! –
@ JonHanlon, tak to jest mylące. Dobrze, że nie pytałeś też o strony językowe i kodowe :-) –