Можно ли выполнить сопоставление с шаблоном регулярного выражения в столбце SQL Server varchar (max) и вернуть совпадение? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть таблица журнала, в которой есть несколько записей, имеющих этот тип шаблона:

.... "RefundId":"re_1ABasdf234234343434", "..."....  

Я хочу извлечь и вернуть значение RefundId в столбце в операторе выбора, это возможно?

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Если для каждой строки есть только один Refund_ID, вы можете использовать что-то вроде этого:

--Create table
create table T1 (
    T1_id int identity(1,1) primary key clustered,
    Log_Data varchar(max) null
)

--Insert test data
insert T1(Log_Data)
values('.... "RefundId":"re_1ABasdf234234343434", "..."....'),
(' "RefundId":"JHHJJHJHJHJJHJH", "..."....'),
(''),
(null)

--Get some results
select  *, left(substring(Log_Data, patindex('%"RefundId":"%', Log_Data)+12, 20000000), patindex('%"%', substring(Log_Data, patindex('%"RefundId":"%', Log_Data)+12, 20000000)) + case when patindex('%"%', substring(Log_Data, patindex('%"RefundId":"%', Log_Data)+12, 20000000)) > 0 then -1 else 0 end ) Refund_ID
from    T1

Если для каждого значения есть несколько Refund_ID, вам придется найти другой метод.

0 голосов
/ 27 марта 2020

Вы можете использовать ключевое слово LIKE

SELECT RefundId
FROM MyTable
WHERE RefundId LIKE 'some pattern'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...