我需要创建一个函数,它将返回分隔字符串的第n个元素.
对于数据迁移项目,我使用SQL脚本将存储在SQL Server数据库中的JSON审核记录转换为结构化报告.目标是提供脚本使用的sql脚本和sql函数,而无需任何代码.
(这是一个短期修复,将在ASP.NET/MVC应用程序中添加新的审核功能时使用)
可用的表格示例不缺少分隔字符串.我选择了一个Common Table Expression示例http://www.sqlperformance.com/2012/07/t-sql-queries/split-strings
示例:我想从'1,222,2,67,888,1111'返回67
我在 sql server 数据库中有一个表,其中有 json 类型的列。
Table - SomeTable
Id | Properties
1 | {"field1":"value1", "field2":"value2", "field3":"value3", "field4":"value4"}
2 | {"field1":"value1", "field2":"value2", "field3":"value3", "field4":"value4"}
...|...
Run Code Online (Sandbox Code Playgroud)
我编写了选择查询,它分别选择每个字段的值:
SELECT
JSON_VALUE(Properties, '$.field1') as field1,
JSON_VALUE(Properties, '$.field2') as field2,
JSON_VALUE(Properties, '$.field3') as field3,
JSON_VALUE(Properties, '$.field4') as field4
FROM SomeTable
Run Code Online (Sandbox Code Playgroud)
我在微软的文档中找到了这种方法(https://learn.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15)
在查询中写入许多 JSON_VALUE-s 会损害性能吗?SQL 是否对查询中写入的每个 JSON_VALUE 进行字符串反序列化。