2016-04-21 9 views
1

abfragen Ich speichere JSON-Daten meine SQL-Server-2016-Tabelle und ich möchte die Tabelle durch Anwenden der WHERE-Klausel auf der JSON wie unten abfragen.Ich möchte den Inhalt der Json innerhalb Spalte wie unten

select c.customer_details.name.fullName 
from j_customer c 
where c.customer_details.name.fullName like '%Gopi%'; 

dies möglich ist, im Orakel aber in MSSQL gibt es den Fehler wie unten

diese Methoden nicht auf nvarchar anrufen können (max).

+0

Welche Abfrage haben Sie verwenden, um Tabelle 'j_customer' zu retten? – DhruvJoshi

Antwort

2

Nachdem ich durch Internet schließlich gegangen bin, fand ich heraus, dass es eine Methode gibt, die JSON_VALUE() genannt wird, das verwendet werden sollte, um den Inhalt des json zu finden. Die Syntax für mssql ist wie folgt.

select * from j_customer where JSON_VALUE(c.customer_details, '$.name.fullName') = 'C';

+0

Ja, das funktioniert, weitere Details finden Sie unter https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server –

1

Soweit ich es verstanden, können Sie Ihre JSON-Daten in die Tabelle mit einer Abfrage wie unten

declare @json nvarchar(max) = '"Customer_details":{"name":{"fullName":"Dhruv Joshi"}}' 

INSERT INTO j_customer 
SELECT * 
FROM OPENJSON(@json) 
WITH (---some columns 
     fullName nvarchar(max) '$.Customer_details.name.fullName' 
    ) 

Sie wie unten abfragen Ihre Tabelle kann

select c.fullName 
from j_customer c 
where c.fullName like '%Gopi%'; 
In solchen Fällen gespeichert haben einfach

In SQL ist der vollqualifizierte SQL-Spaltenname normalerweise wie [DatabaseName].[schema].[tablename].[columnname], daher interpretiert hier in WHERE-Klausel c.customer_details.name.fullName als c.customer_details eine Spalte als c ist ein Tabellenalias Und dann sieht aus wie ein Methodenaufruf auf den Spaltennamen, der den Fehler generiert.

+0

Danke für die Antwort .. Ich habe versucht zu fragen, wie Sie es dint Arbeit gegeben haben .. seine sagen Ungültige Spaltenname 'fullName'. Ich habe den JSON als einfachen Text eingefügt. Der Datentyp der Spalte customer_details ist nvarchar (max) ist das das Problem? – Gopi

+0

OK. Also im Grunde die 'customer_details' Spalte der Tabelle' j_customer' Tabelle hat JSON von denen Sie müssen überprüfen und analysieren Fullname? – DhruvJoshi

+0

Ja genau .. Unterstützt sql Server dies? – Gopi