Πώς μπορώ να επιλέξω ένα JSON_VALUE αν το όνομα αντικειμένου περιέχει ένα μόνο απόσπασμα;

ψήφοι
1

Είμαι προσπαθεί να πάρει μια τιμή από κάποιο JSON σε έναν πίνακα. Αυτό είναι το ερώτημα μου:

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

Για να δοκιμάσετε και να πάρετε την τιμή για την ταυτότητα του ατόμου. Αυτό είναι (μέρος της) JSON αποθηκεύονται στη στήλη JSON_Data:

Person's_ID: Test

Έχω δοκιμάσει με δύο μονά εισαγωγικά, αλλά αυτό εξακολουθεί να δίνει ένα σφάλμα:

JSON διαδρομή δεν έχει τη σωστή μορφή. Μη αναμενόμενος χαρακτήρας «»»βρίσκεται στη θέση 8.»

Χρησιμοποιώντας μια ανάστροφη κάθετο για να ξεφύγουν από την ενιαία προσφορά και δεν λειτουργεί.

Δημοσιεύθηκε 08/11/2018 στις 00:02
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
4

Αυτό μπορεί να είναι ένα καλό μάθημα για να μην κάνει JSON σκουπίδια (και επικύρωση προτού την τοποθετήσετε στη βάση δεδομένων), δεδομένου ότι, σύμφωνα με το πρότυπο , και μόνη προσφορά δεν είναι αποδεκτή χαρακτήρα σε ένα όνομα οντότητας. :-)

Θα μπορούσατε να δοκιμάσετε αυτό το είδος της αντικατάστασης, αλλά η απόδοση θα είναι αρκετά craptastic, και θα αντικαταστήσει όλες τις περιπτώσεις Person's_ID, όχι μόνο όταν εμφανίζεται ως αντικείμενο:

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

Εργασία παράδειγμα:

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

Αποτέλεσμα:

Test
Απαντήθηκε 08/11/2018 στις 00:44
πηγή χρήστη

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