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.