[SQL] Tìm hiểu và sử dụng Json trong Sqlserver 2016
Trong Microsoft Sqlserver 2016, microsoft đã tích hợp thêm Json vào trong hệ quản trị cơ sở dữ liệu này. Vì thế, các bạn có thể thấy được tầm quan trọng và phổ biến Json như thế nào. Các bạn cũng có thể thấy ngày nay, Facebook API hay các server API ...
Trong Microsoft Sqlserver 2016, microsoft đã tích hợp thêm Json vào trong hệ quản trị cơ sở dữ liệu này. Vì thế, các bạn có thể thấy được tầm quan trọng và phổ biến Json như thế nào.
Các bạn cũng có thể thấy ngày nay, Facebook API hay các server API khác đa số đều trả về cho chúng ta kiểu dữ liệu JSON, thay vì XML.
- Trong Sqlserver 2016, các bạn có thể lưu trực tiếp chuỗi JSON xuống datatabase theo trường Nvarchar.
Dưới đây là cấu trúc mẫu của một chuỗi JSON
{ "firstName": "Nguyễn", "lastName": "Thảo", "age": 25, "address":{ "streetAddress": "290/58 Nơ Trang Long", "city": "Việt Nam", "state": "VN", "postalCode": "76000" }, "phoneNumber": [ {"type": "home","number": "212 555-1234"}, {"type": "fax","number": "646 555-4567"} ] }
1. Sử dụng json_Parse
- Cách select chuỗi json trong sqlserver, các bạn dùng từ khóa json_Parse, để select một chuỗi json từ database thành dưới dạng table. Các bạn có thể xem ví dụ, bên dưới.
select * from json_Parse('{ "firstName": "John", "lastName": "Smith", "age": 25, "address":{ "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ {"type": "home","number": "212 555-1234"}, {"type": "fax","number": "646 555-4567"} ] }')
Và dưới đây là kết quả trả về
2. Sử dụng json_toJson, dùng để insert chuỗi json xuống database.
Các bạn có thể sử dụng hàm Insert Into... Select để thêm nguyên một khối dữ liệu json thành thành các trường xuống database.
Trong lập trình Web, nếu các bạn sử dụng convert json thành mảng, rồi sau đó các bạn foreach cái mảng đó và lưu từng trường xuống cơ sở dữ liệu.
Thì trong Sql server 2016, các bạn có thể thêm trực tiếp nguyên Json xuống database.
declare @data pJsonData insert into @data select * from json_Parse('[ {"Name": "John Smith" , "address":{"streetAddress": "21 2nd Street","city": "New York"}}, {"Name": "Jane Doe" , "address":{"streetAddress": "22 Madison Ave","city": "New York"}}, {"Name": "George Williams", "address":{"streetAddress": "18 3rd Street","city": "Chicago"}} ]')
Kết quả của câu truy vấn T-sql trên:
3. Select sqlserver to Json
Các bạn, có thể sử dụng từ khóa FOR JSON, để chuyển bảng dữ liệu truy vấn được sang kiểu Json.
SELECT name, surname FROM emp FOR JSON AUTO
Các bạn, có thể dùng thêm từ khóa ROOT để đặt tên khóa cho nguyên đoạn json từ kết quả truy vấn Sqlserver
SELECT Id, Name, State, Country FROM dbo.Customer FOR JSON PATH, ROOT('Customers')
HAVE FUN :)
trừ khóa json_Parse sao không bị loại bỏ rồi sao anh nhỉ ?của em bị báo lỗi:
Invalid object name 'json_Parse'.