gpt4 book ai didi

sql - 在特定单词后返回 SUBSTRING 并在第一个引号处结束

转载 作者:行者123 更新时间:2023-12-05 03:05:02 25 4
gpt4 key购买 nike

我正在尝试返回特定单词前后的 SUBSTRING 数据。例如选择 name 之后的所有内容,直到 quote(")。我需要为字符串中的每个必填字段重复此操作。

这是我需要从中提取数据的示例注释值:

[
{
"code":"0123456",
"name":"example",
"table":"exampletable",
"addedby":"exampleperson",
"dateadded":1520333304750,
"qualifier":[
{
"name":"Qualifier",
"value":"examplevalue",
"code":"123456",
"prefix":"[?] "
}
],
"prefix":"[?] ",
"suffix":""
},
{
"code":"68566005",
"name":"example2",
"table":"exampletable2",
"addedby":"exampleperson2",
"dateadded":1519874550441,
"qualifier":[
{
"name":"Qualifier",
"value":"examplevalue2",
"code":"415684004 ",
"prefix":"[?] "
}
],
"prefix":"[?] ",
"suffix":""
}
]

这是我尝试从中提取 name 的尝试:

select SUBSTRING(NoteValue, CHARINDEX('name', NoteValue), LEN(NoteValue))NoteValue 

它从 notekey 的“名称”部分开始,但我需要弄清楚如何在特定点结束它。最终结果是我将能够为每个字段选择每个值字符串。

使这个稍微复杂的部分是我可能需要从字符串中提取多个 name 字段。

希望我的问题有道理。谢谢。

最佳答案

我跳了一些舞,但这里有一个使用字符串函数的解决方案:

DECLARE @json NVARCHAR(MAX)
,@namestart int
,@Q1 int
,@Q2 int
,@After varchar(100)
,@before varchar(100)

SET @json='{"code":"0123456" ,"name":"example" ,"table":"exampletable" ,"addedby":"exampleperson" ,"dateadded":1520333304750, "qualifier":[{"name":"Qualifier" ,"value":"examplevalue" ,"code":"123456", "prefix":"[?] "}] ,"prefix":"[?] " ,"suffix":""} ,{"code":"68566005" ,"name":"example2" ,"table":"exampletable2", "addedby":"exampleperson2" ,"dateadded":1519874550441, "qualifier":[{"name":"Qualifier" ,"value":"examplevalue2" ,"code":"415684004 ","prefix":"[?] "}] ,"prefix":"[?] " ,"suffix":""';

set @namestart = charindex('"name"',@json)

set @Q1 = CHARINDEX('"',@json, @namestart + len('"name"'))

set @Q2 = CHARINDEX('"',@json , @Q1+1)

set @After = substring(@json, @q1+1,@q2-@q1-1)

--select @namestart , @Q1 ,@Q2, @After

declare @priorPiece varchar(100)

set @priorPiece = left(@json,@namestart-1)

set @Q1 = charindex('"',reverse(@priorPiece ))
set @q2 = charindex('"',reverse(@priorPiece ),@q1+1)
set @before = reverse(substring(reverse(@priorPiece ),@q1+1,@q2-@q1-1))

select @before,@after

关于sql - 在特定单词后返回 SUBSTRING 并在第一个引号处结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51517951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com