使用 SQL Server 2022,尝试创建一个计算列,用于在斜杠分隔的字符串的第三部分(它是一个 URI)上进行索引/查询。
Alter Table MyTable Add SpotName As
( Cast( (Select Value from String_Split(FullUri,'/',7) )
as VarChar(128) ) ) Persisted
错误是
在此上下文中不允许子查询。仅允许使用标量表达式。
我想对 URI 的 5 个不同部分执行此操作,那么索引/优化不同子字符串部分的查询的智能方法是什么?
谢谢。
你可以做
Alter Table MyTable
Add SpotName As ( Cast(JSON_VALUE('["' + REPLACE(FullUri, '/', '","') + '"]', '$[6]')as VarChar(128))) PERSISTED
以被视为确定性的方式分割字符串,以便可以持久化和/或索引,并且不使用标量 UDF(阻止表上的并行性)。
请注意,位置是基于
0
- 不是基于 1
。