SQLite
 sql >> Baza danych >  >> RDS >> SQLite

SQLite JSON_ARRAY_LENGTH()

W SQLite json_array_length() funkcja zwraca liczbę elementów w danej tablicy JSON.

Tablica jest dostarczana jako argument. Jeśli tablica jest osadzona w większym dokumencie JSON, możemy użyć opcjonalnego drugiego argumentu, aby określić ścieżkę do tablicy.

Jeśli wartość nie jest tablicą, funkcja zwraca 0 .

Składnia

Funkcji można używać na dwa sposoby:

json_array_length(X)
json_array_length(X,P)

Gdzie X reprezentuje tablicę i P to opcjonalna ścieżka, której można użyć do określenia ścieżki do tablicy w większym dokumencie.

Przykład

Oto podstawowy przykład do zademonstrowania:

SELECT json_array_length('[ 7, 12, 10 ]');

Wynik:

3

Tablica zawiera trzy elementy, a więc 3 jest zwracany.

Określ ścieżkę

Możemy również użyć drugiego argumentu, aby określić ścieżkę do tablicy:

SELECT json_array_length('[ 7, 12, 10 ]', '$');

Wynik:

3

W tym przypadku tablica jest na najwyższym poziomie, więc przekazujemy $ jako ścieżka.

W poniższym przykładzie użyto tablicy osadzonej w większym dokumencie:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs'
);

Wynik:

3

W tym przypadku tablica w dogs zawiera trzy elementy.

Możemy przejść do następnego poziomu i znaleźć liczbę elementów w jednej z pozostałych tablic:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].scores'
);

Wynik:

4

Tablice są oparte na zerach, więc licznik zaczyna się od 0 . Dlatego określiliśmy [1] aby uzyskać drugi element w dogs tablica, która jest obiektem JSON. Następnie używamy .scores aby wybrać jego tablicę.

Wybieranie nie-tablic

Jeśli ścieżka wskazuje na wartość inną niż tablica JSON, 0 jest zwracany:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.dogs[1].name'
);

Wynik:

0

Wybieranie nieistniejącej ścieżki

Jeśli drugi argument wskazuje na ścieżkę, która nie istnieje, null jest zwracany.

Najpierw ustawmy .nullvalue na NULL :

.nullvalue NULL

.nullvalue Polecenie kropka pozwala nam dostarczyć ciąg znaków, który zostanie użyty do zastąpienia wartości null. Jest to jeden z kilku sposobów zastępowania wartości null ciągiem w SQLite. W tym przypadku ustawiłem go na NULL . Teraz wszystkie wartości null zwrócą NULL zamiast pustego wyniku.

Teraz wywołajmy json_array_length() , ale użyj drugiego argumentu, który wskazuje na nieistniejącą ścieżkę:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'$.cats'
);

Wynik:

NULL

Nieprawidłowe ścieżki

Otrzymamy błąd, jeśli nasza ścieżka nie jest dobrze uformowana:

SELECT json_array_length('{
    "dogs" : [
            { "name" : "Wag", "scores" : [ 7, 9 ] },
            { "name" : "Bark", "scores" : [ 3, 4, 8, 7 ] },
            { "name" : "Woof", "scores" : [ 3, 2, 1 ] }
    ]
}', 
'dogs'
);

Wynik:

Runtime error: JSON path error near 'dogs'

W tym przypadku zapomniałem dołączyć $. z przodu ścieżki.

Nieprawidłowe dokumenty JSON

Otrzymamy również błąd, że JSON nie jest poprawnie sformułowany:

SELECT json_array_length('{ "Dogs" : }', 
'$'
);

Wynik:

Runtime error: malformed JSON

Tym razem błąd mówi nam, że nasz JSON jest zniekształcony.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak sprawdzić bazę danych na nierootowanym urządzeniu z Androidem?

  2. Uruchamianie Total-Order By Date w SQLite

  3. Baza danych nie zostanie usunięta po odinstalowaniu aplikacji na Androida

  4. Ograniczenia SQLite CHECK

  5. Android:Jak zaimportować kontakt z telefonu?