Jak porównywać ciągi, aby porównanie było prawdziwe tylko wtedy, gdy przypadki każdego z ciągów również są równe. Na przykład:
Select * from a_table where attribute = 'k'
... zwróci wiersz z atrybutem „K”. Nie chcę tego zachowania.
Jak porównywać ciągi, aby porównanie było prawdziwe tylko wtedy, gdy przypadki każdego z ciągów również są równe. Na przykład:
Select * from a_table where attribute = 'k'
... zwróci wiersz z atrybutem „K”. Nie chcę tego zachowania.
Odpowiedzi:
Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS
Wykonał lewę.
Latin1_General_CS_AS
to specyfikacja sortowania. Sortowanie odnosi się do zestawu reguł, które określają sposób sortowania i porównywania danych. Zobacz tę stronę, aby uzyskać więcej informacji.
Możesz również przekonwertować ten atrybut na wielkość liter, używając następującej składni:
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CS_AS
Teraz w wyszukiwaniu rozróżniana jest wielkość liter .
Jeśli chcesz ponownie rozróżnić wielkość liter w tej kolumnie , użyj
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS
Możesz łatwo przekonwertować kolumny na VARBINARY (maksymalna długość), długość musi być wartością maksymalną, jakiej można się spodziewać, aby uniknąć wadliwego porównania, wystarczy ustawić długość jako długość kolumny. Przytnij kolumnę pomaga porównać rzeczywistą wartość, z wyjątkiem tego, że spacja ma znaczenie i jest wyceniana w kolumnach tabeli. To prosta próbka. Jak widać I Przytnij wartość kolumny, a następnie przekonwertuj i porównaj:
CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))
Mam nadzieję, że to pomoże.
Jako kolejną alternatywę możesz użyć HASHBYTES, coś takiego:
SELECT *
FROM a_table
WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k')