SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLite JSON_QUOTE ()

Trong SQLite, json_quote() hàm chuyển đổi một số hoặc chuỗi thành biểu diễn JSON tương ứng của nó.

Chúng tôi cung cấp số hoặc chuỗi làm đối số khi chúng tôi gọi hàm và hàm trả về biểu diễn JSON của giá trị đó.

Cú pháp

Cú pháp như sau:

json_quote(X)

Ở đâu X là một số hoặc chuỗi.

Ví dụ

Đây là những gì sẽ xảy ra khi chúng tôi truyền một chuỗi vào hàm:

SELECT json_quote('Super');

Kết quả:

"Super"

Và đây là một số:

SELECT json_quote(10.45);

Kết quả:

10.45

Đây là một chuỗi trông giống như một mảng:

SELECT json_quote('[10.45]');

Kết quả:

"[10.45]"

Đây là một chuỗi trông giống như một đối tượng:

SELECT json_quote('{ "score" : 10.45 }');

Kết quả:

"{ \"score\" : 10.45 }"

Nhưng nếu chúng ta truyền đối số trong json() , chúng tôi nhận được cái này:

SELECT json_quote(json('{ "score" : 10.45 }'));

Kết quả:

{"score":10.45}

Giá trị rỗng

Chuyển null trả về null :

SELECT json_quote( null );

Kết quả:

null

Đây thực sự là giá trị văn bản SQL null . Chúng tôi có thể xác minh điều này bằng cách chuyển nó đến json_type() chức năng:

SELECT json_type(json_quote( null ));

Kết quả:

null

json_type() hàm trả về kiểu giá trị văn bản SQL của đối số của nó. Trong trường hợp này, nó trả về null , chỉ ra rằng json_quote() hàm trả về null khi chúng tôi vượt qua null với nó.

Trong trường hợp chúng tôi nghi ngờ rằng SQLite CLI của chúng tôi đang trả về null do giá trị null thực tế được trả về, chúng tôi có thể làm như sau để loại trừ:

.nullvalue N/A

Điều đó yêu cầu giao diện dòng lệnh của chúng tôi trả về N/A bất cứ khi nào giá trị null được trả về.

Sau khi chạy lệnh trên, hãy chạy lại các câu lệnh trước đó, cũng như một thao tác thực sự dẫn đến giá trị null:

SELECT 
    json_quote( null ) AS json_quote,
    json_type(json_quote( null )) AS json_type,
    1 / 0 AS actual_null;

Kết quả:

+------------+-----------+-------------+
| json_quote | json_type | actual_null |
+------------+-----------+-------------+
| null       | null      | N/A         |
+------------+-----------+-------------+

Trong SQLite, chia một số cho 0 dẫn đến giá trị rỗng (nhiều DBMS khác gặp lỗi trong những trường hợp như vậy). Trong ví dụ này, tôi đã đặt giá trị null để trả về N/A và vì vậy chúng ta có thể thấy rằng có sự khác biệt giữa kết quả đầu ra của hai hàm và giá trị null thực tế. Nghĩa là, giá trị null duy nhất trong đầu ra ở trên nằm ở cột cuối cùng.

Đã nói tất cả những điều đó, giá trị null vẫn có thể dẫn đến giá trị văn bản SQL null được trả về khi gọi json_quote() . Có lẽ một ví dụ minh họa điều này tốt hơn tôi có thể giải thích:

SELECT 
    json_quote( 1 / 0 ),
    json_type(json_quote( 1 / 0 )),
    json_type( 1 / 0 ),
    1 / 0;

Kết quả:

+---------------------+--------------------------------+--------------------+-------+
| json_quote( 1 / 0 ) | json_type(json_quote( 1 / 0 )) | json_type( 1 / 0 ) | 1 / 0 |
+---------------------+--------------------------------+--------------------+-------+
| null                | null                           | N/A                | N/A   |
+---------------------+--------------------------------+--------------------+-------+

Chúng ta có thể thấy rằng hai cột đầu tiên trả về null Giá trị văn bản SQL và hai cột khác trả về giá trị rỗng thực tế.

Truyền Booleans

Dưới đây là một ví dụ về việc chuyển các boolean như truefalse :

SELECT 
    json_quote( true ) AS true,
    json_quote( false ) AS false;

Kết quả:

+------+-------+
| true | false |
+------+-------+
| 1    | 0     |
+------+-------+

Số lượng đối số không hợp lệ

Việc gọi hàm mà không chuyển đối số dẫn đến lỗi:

SELECT json_quote();

Kết quả:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote();
         ^--- error here

Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:

SELECT json_quote( 1, 2 );

Kết quả:

Parse error: wrong number of arguments to function json_quote()
  SELECT json_quote( 1, 2 );
         ^--- error here

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android:Lỗi Sqlite - (1) near null:lỗi cú pháp

  2. Trừ số năm cho một ngày trong SQLite

  3. Không thể mở cơ sở dữ liệu SQLite từ SQLIte Helper Oncreate, khi OnCreate được kích hoạt bằng cách mở cơ sở dữ liệu lần đầu tiên

  4. Cách thay đổi dấu nhắc dòng lệnh trong SQLite

  5. group_concat và cách sử dụng số hàng trong sqlite