拆分值的计算列?

问题描述 投票:0回答:1

使用 SQL Server 2022,尝试创建一个计算列,用于在斜杠分隔的字符串的第三部分(它是一个 URI)上进行索引/查询。

Alter Table MyTable Add SpotName As 
(  Cast(    (Select Value from String_Split(FullUri,'/',7) )
as VarChar(128) )             ) Persisted

错误是

在此上下文中不允许子查询。仅允许使用标量表达式。

我想对 URI 的 5 个不同部分执行此操作,那么索引/优化不同子字符串部分的查询的智能方法是什么?

谢谢。

sql sql-server split substring
1个回答
1
投票

你可以做

Alter Table MyTable 
Add SpotName As (  Cast(JSON_VALUE('["' + REPLACE(FullUri, '/', '","') + '"]', '$[6]')as VarChar(128))) PERSISTED

以被视为确定性的方式分割字符串,以便可以持久化和/或索引,并且不使用标量 UDF(阻止表上的并行性)。

请注意,位置是基于

0
- 不是基于
1

© www.soinside.com 2019 - 2024. All rights reserved.