2013-06-04 3 views
4

У меня есть строка Json. Я хочу получить значение из этой строки Json.Обработка данных JSON в SQL Server

Это моя строка JSON {"latitude":"22.5712854"},{"longitude":"88.4266847"}

Я хочу только latitude и longitude от этого, используя TSQL запрос.

+3

Это может помочь вам: https://www.simple-talk.com/sql/t-sql-programming/consuming-json-strings-in-sql-server/ –

+0

TSQL не может анализировать JSON изначально, и это очень слабый язык для разбора и обработки текста в целом (хотя вы можете проанализировать строку, которую вы указали, используя только 'SUBSTRING' и' CHARINDEX'). Это почти наверняка будет проще сделать, используя код вне базы данных или, возможно, процедуру CLR; таким образом вы можете использовать язык с поддержкой JSON или, по крайней мере, хорошие функции обработки текста. – Pondlife

+2

Возможный дубликат [Parse JSON in TSQL] (http://stackoverflow.com/questions/2867501/parse-json-in-tsql) – AndrewC

ответ

5

Не существует собственного способа анализа JSON в TSQL. Но Фил Фактор создал свою собственную реализацию обработки JSON в функции SQL. Подробнее об этом на простом блоге разговора в статье: Consuming JSON Strings in SQL Server

Aslo Ric Vander Ark создал свою собственную функцию, но я ее не тестировал. Вы можете узнать больше о статье: A Function to Split JSON Data

+2

« Не существует собственного способа анализа JSON в TSQL, но Phil Factor создал собственную реализацию [для анализа JSON в TSQL] »< Противоречие в лучшем виде. Тем не менее, спасибо за ссылку о том, как разбирать JSON в TSQL. :) – rainabba

+0

Пользовательская реализация, как указано, отличается от встроенного (то есть встроенного) способа. – Runonthespot

0

Вы можете использовать JSON Select, который имеет несколько функций для извлечения разных типов данных из JSON. Для ваших требований вы могли бы сделать что-то вроде этого:

select 
    dbo.JsonDecimal(my_column, 'latitude') as latitude, 
    dbo.JsonDecimal(my_column, 'longitude') as longitude 
from my_table 

РАЗГЛАШЕНИЯ: Я являюсь автором JSON Select, и как таковой есть интерес к вам использовать его :)

Смежные вопросы