SQL 获取引号内的值
SQL get values within quotes
我遇到了以下问题我在 SQL 中有几个字符串并尝试从中获取一小部分但我无法让它工作。
我的字符串示例:
{"@odata.type":"#make.this.short","Id":0,"Value":"Whosebug"}
[{"@odata.type":"#Mmake.this.short","Id":1,"Value":"Whosebug1"},{"@odata.type":"#make.this.short","Id":2,"Value":"Whosebug2"}]
{"@odata.type":"#make.this.short","Claims":"i:0#.f|membership|name@email.nl","DisplayName":"Lastname F. (Firstname)","Email":"Name@email.nl","Picture":"https://picture.com/","Department":null,"JobTitle":null}
现在我正在尝试编写存储过程并获取以下值:
计算器
Whosebug1,Whosebug2
和名字@email.nl
我尝试使用 SUBSTRING、LEN、RIGHT、CHARINDEX 和 REVERSE,但我似乎无法获得我需要的东西。 Value: 的值对于每条记录当然可以有不同的长度。
我的想法是统计字符串总数(len string)
然后得到右边的第一个 " 并从总字符串中减去它。
然后我会尝试获取第二个 " 并从第一个中减去它。剩下的是里面的值,我可以使用子字符串。
但这只适用于第一个,其他的则完全不同,不知何故我什至无法让第一个做我喜欢的事。 (我好像找不到右边的第二个")
我希望这是足够的信息,以便您能指出正确的方向来解决这个问题。
谢谢
由于您使用的是 SQL Server 2017,因此您应该为此使用 JSON 函数
SELECT JSON_VALUE('{"@odata.type":"#make.this.short","Id":0,"Value":"Whosebug"}','$.Value')
SELECT JSON_VALUE('{"@odata.type":"#make.this.short","Claims":"i:0#.f|membership|name@email.nl","DisplayName":"Lastname F. (Firstname)","Email":"Name@email.nl","Picture":"https://picture.com/","Department":null,"JobTitle":null}','$.Email')
SELECT STRING_AGG(JSON_VALUE(value,'$.Value') ,',')
FROM OPENJSON('[{"@odata.type":"#Mmake.this.short","Id":1,"Value":"Whosebug1"},{"@odata.type":"#make.this.short","Id":2,"Value":"Whosebug2"}]','$')
我遇到了以下问题我在 SQL 中有几个字符串并尝试从中获取一小部分但我无法让它工作。
我的字符串示例:
{"@odata.type":"#make.this.short","Id":0,"Value":"Whosebug"}
[{"@odata.type":"#Mmake.this.short","Id":1,"Value":"Whosebug1"},{"@odata.type":"#make.this.short","Id":2,"Value":"Whosebug2"}]
{"@odata.type":"#make.this.short","Claims":"i:0#.f|membership|name@email.nl","DisplayName":"Lastname F. (Firstname)","Email":"Name@email.nl","Picture":"https://picture.com/","Department":null,"JobTitle":null}
现在我正在尝试编写存储过程并获取以下值:
计算器
Whosebug1,Whosebug2
和名字@email.nl
我尝试使用 SUBSTRING、LEN、RIGHT、CHARINDEX 和 REVERSE,但我似乎无法获得我需要的东西。 Value: 的值对于每条记录当然可以有不同的长度。
我的想法是统计字符串总数(len string) 然后得到右边的第一个 " 并从总字符串中减去它。 然后我会尝试获取第二个 " 并从第一个中减去它。剩下的是里面的值,我可以使用子字符串。
但这只适用于第一个,其他的则完全不同,不知何故我什至无法让第一个做我喜欢的事。 (我好像找不到右边的第二个")
我希望这是足够的信息,以便您能指出正确的方向来解决这个问题。
谢谢
由于您使用的是 SQL Server 2017,因此您应该为此使用 JSON 函数
SELECT JSON_VALUE('{"@odata.type":"#make.this.short","Id":0,"Value":"Whosebug"}','$.Value')
SELECT JSON_VALUE('{"@odata.type":"#make.this.short","Claims":"i:0#.f|membership|name@email.nl","DisplayName":"Lastname F. (Firstname)","Email":"Name@email.nl","Picture":"https://picture.com/","Department":null,"JobTitle":null}','$.Email')
SELECT STRING_AGG(JSON_VALUE(value,'$.Value') ,',')
FROM OPENJSON('[{"@odata.type":"#Mmake.this.short","Id":1,"Value":"Whosebug1"},{"@odata.type":"#make.this.short","Id":2,"Value":"Whosebug2"}]','$')