Sortowanie

Sekwencje sortowania są używane przez sqlite podczas porównywania wartości TEXT w celu określenia kolejności i równości. Można określić sortowanie, które ma być używane podczas tworzenia kolumn lub operacji w zapytaniach SQL. SqLite domyślnie zawiera trzy sekwencje sortowania.

Sortowanie opis
RTRIM Ignoruje końcowe odstępy
NOCASE Bez uwzględniania wielkości liter dla znaków ASCII A-Z
BINARNYM Rozróżniana wielkość liter. Porównuje bajty bezpośrednio

Sortowanie niestandardowe

Możesz również zdefiniować własne sekwencje sortowania lub zastąpić wbudowane przy użyciu polecenia CreateCollation. W poniższym przykładzie pokazano zastąpienie sortowania NOCASE w celu obsługi znaków Unicode. Pełny przykładowy kod jest dostępny w witrynie GitHub.

connection.CreateCollation("NOCASE", (x, y) => string.Compare(x, y, ignoreCase: true));

var queryCommand = connection.CreateCommand();
queryCommand.CommandText =
@"
    SELECT count()
    FROM greek_letter
    WHERE value = 'λ' COLLATE NOCASE
";
var oCount = queryCommand.ExecuteScalar();
var count = (oCount is not null) ? (int)oCount : -1;

Operator like

Operator LIKE w sqlite nie honoruje sortowania. Domyślna implementacja ma taką samą semantykę jak sortowanie NOCASE. Nie jest uwzględniana tylko wielkość liter dla znaków ASCII od A do Z.

Można łatwo określić wielkość liter operatora LIKE, używając następującej instrukcji pragma:

PRAGMA case_sensitive_like = 1

Zobacz Funkcje zdefiniowane przez użytkownika, aby uzyskać szczegółowe informacje na temat zastępowania implementacji operatora LIKE.

Zobacz też