我有一个日志表,其中有一些记录具有以下类型的模式:
.... "RefundId":"re_1ABasdf234234343434", "..."....
我想提取并返回select语句中一列中RefundId
的值,这可能吗?
如果每行只有一个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,那么您必须找到不同的方法。
您可以使用关键字LIKE
SELECT RefundId
FROM MyTable
WHERE RefundId LIKE 'some pattern'