Jak mohu vybrat JSON_VALUE Pokud název objektu obsahuje jeden citát?

hlasů
1

Snažím se dostat hodnotu z nějakého JSON v tabulce. To je můj dotaz:

Select JSON_VALUE(JSON_Data, '$.Person's_ID') FROM Table 

Aby se pokusila získat hodnotu Id osoby. To je (část) JSON uložené ve sloupci JSON_Data:

Person's_ID: Test

Snažil jsem se pomocí dvou apostrofy ale stále dává chybu:

JSON cesta není ve správném formátu. Neočekávaný znak ‚‘‘se nalézá v poloze 8.“

Pomocí zpětné lomítko, aby se vyhnuli apostrof také nefunguje.

Položena 08/11/2018 v 00:02
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
4

To by mohla být dobrá lekce nedělat odpadky JSON (a potvrdit ji před vložením do databáze), neboť v souladu s normou , apostrof není přijímaný znak v názvu subjektu. :-)

Můžete zkusit tento typ náhrady, ale výkon se bude dost craptastic, a nahradí všechny výskyty Person's_ID, a to ve chvíli, kdy se zdá, jako předmět:

SELECT JSON_VALUE(REPLACE(JSON_Data,'Person''s_ID','Person_s_ID'), '$.Person_s_ID')
  FROM dbo.Table;

Pracovní příklad:

DECLARE @d varchar(255) = '{"Person''s_ID": "Test"}';
SELECT JSON_VALUE(REPLACE(@d,'Person''s','Person_s'), '$.Person_s_ID');

Výsledek:

Test
Odpovězeno 08/11/2018 v 00:44
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more