SQL Server: возвращать значения столбцов с определенным шаблоном - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь сделать что-то действительно крутое в SQL-таблице, как показано ниже

Имя таблицы: details

Id      Content
---------------------------------------------------------------------------
X345    {"Primary":["Aadhaar"],"Secondary":["Driving License","Others"]}
X346    {"Primary":["Voter ID"],"Secondary":["Driving License","Others"]}

Из столбца Content я хотел быизвлекать только первичные детали, то есть значения между первыми ["_____"].Есть ли способ сделать это?

Примерно так:

Aadhaar
Voter ID

Я понятия не имею, как использовать регулярные выражения в этой таблице SQL Server.

Пожалуйста, дайте мне некоторое представление о том, как я могу это сделать.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вот реализация в SQL Server 2014:

-- This temp table is only for testing purposes:

    DECLARE @T TABLE
    (
      Id int, 
      Content varchar(max)
    )
    INSERT INTO @T Values
    (1,'{"Primary":["Aadhaar"],"Secondary":["Driving License","Others"]}'),
    (2,'{"Primary":["Voter ID"],"Secondary":["Driving License","Others"]}'),
    (3,'{"Primary":["A Much Longer Testing Case"],"Secondary":["Driving License","Others"]}')


    SELECT LEFT(SUBSTRING(Content,14,LEN(Content)),CHARINDEX('"', SUBSTRING(Content,14,LEN(Content))) - 1)
    FROM @T

Демонстрационная версия

0 голосов
/ 01 февраля 2019

Какой движок SQL вы используете?(SQL Server, PGSQL или MySql и т. Д.)

Как правило, вы можете использовать строковую функцию для поиска позиции и последующего извлечения данных.

Для SQL Server CHARINDEX и SUBSTRING должны решить вашу проблемуВ приведенном ниже примере я взял жестко закодированную строку, но вы можете заменить ее именем столбца.

SELECT substring('{"Primary":["Aadhaar"],"Secondary":["Driving License","Others"]}' ,CHARINDEX('["Aadhaar"]', '{"Primary":["Aadhaar"],"Secondary":["Driving License","Others"]}'),14) AS Aadhar;
...