案例:我们的桌子上有智能的guids,需要从中提取第二和第四部分。我正在考虑编写一个函数,它可以接受@partnumber并返回提取出来的值。
例如:
DECLARE @Guid UNIQUEIDENTIFIER = 'A7DDAA60-C33A-4D7A-A2D8-ABF20127C9AE'第一部分= A7DDAA60,第二部分= C33A,第三部分= 4D7A,第四部分= A2D8,第五部分= ABF20127C9AE
基于@partnumber,它将返回其中一个值。
我正试图找出如何最有效地拆分它(STRING_SPLIT并不保证订单)。
发布于 2020-07-08 18:24:43
我不太清楚你所说的“聪明的”到底是什么意思,但为什么不直接把它扔到煤焦里,然后按位置拔出零件呢?
create table t(myguid uniqueidentifier);
declare @p tinyint = 5;
select case @p
when 1 then left(c.v, 8)
when 2 then substring(c.v, 10, 4)
when 3 then substring(c.v, 15, 4)
when 4 then substring(c.v, 20, 4)
when 5 then right(c.v, 12)
end
from t
cross apply (select cast(t.myguid as char(36))) c(v)发布于 2020-07-08 18:35:37
你可以用,OPENJSON
DECLARE @Guid UNIQUEIDENTIFIER = 'A7DDAA60-C33A-4D7A-A2D8-ABF20127C9AE',
@s varchar(100)
Select @s = replace(@guid,'-','","')
Select * from
(
Select [key] + 1 as Poistion, Value as Part
FROM OPENJSON('["' + @s + '"]')
) Q
Where Poistion in (2,4)这是小提琴。
https://stackoverflow.com/questions/62801049
复制相似问题