web-dev-qa-db-ja.com

Jsonオブジェクトから値を取得するには、SQLクエリを使用してテーブル列が含まれています

SQL Serverデータベースに2つの列BooksIdを持つテーブルBookCategoryがあります。ここで、Idは主キー、BookCategory JSONオブジェクトが含まれています。

これは私のテーブル Books

テーブルBookCategory列の値をCategoryとしてのみ取得しようとしています。そのために、次のSQLクエリを記述しましたが、取得できませんでした。 JSONオブジェクトの値をクエリの結果として通常の列の値として取得するアイデアがあります。

SELECT 
    Id, BookCategory.Name AS Name, 
    BookCategory.Category AS Category 
FROM
    Books

したがって、結果は次のようになります。

Id=1
Name=CA
Category=cs

SQL Server Management Studioでエラーが発生します。

マルチパート識別子「BookCategory.Name」をバインドできませんでした。

上記の表の本と同じ結果を得るのに役立つ。

前もって感謝します。

5
cp08

そのはず

SELECT 
    Id, 
    JSON_VALUE(BookCategory,'$.Name') AS Name, 
    JSON_VALUE(BookCategory,'$.Category') AS Category 
FROM
    Books

ドキュメント: https://docs.Microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server

SQLでJSONを使用するには、特別な関数を使用する必要があります(JSONはMS-SQL 2016でサポートされています)。 Table.column表記は、INTEGERまたはVARCHARなどの通常のSQL列タイプ用です。

7
Dmitry