TSQL-拆分GUID/唯一标识符

TSQL-拆分GUID/唯一标识符,sql,sql-server,sql-server-2016,Sql,Sql Server,Sql Server 2016,案例:我们在一个表中有智能guid,需要从中提取第二和第四部分。我正在考虑编写一个函数,它可以接受@partnumber并返回它的提取值 e、 g 第一部分=A7DDAA60,第二部分=C33A,第三部分=4D7A,第四部分= A2D8和第五部分=ABF20127C9AE 基于@partnumber,它将返回其中一个值 我正试图找出如何最有效地分割它(字符串分割不能保证顺序)。我不确定“智能”guid到底是什么意思,但为什么不直接将其转换为字符并按位置取出部分呢 create table t(m

案例:我们在一个表中有智能guid,需要从中提取第二和第四部分。我正在考虑编写一个函数,它可以接受@partnumber并返回它的提取值

e、 g

第一部分=A7DDAA60,第二部分=C33A,第三部分=4D7A,第四部分= A2D8和第五部分=ABF20127C9AE

基于@partnumber,它将返回其中一个值


我正试图找出如何最有效地分割它(字符串分割不能保证顺序)。

我不确定“智能”guid到底是什么意思,但为什么不直接将其转换为字符并按位置取出部分呢

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)
    

我不知道你所说的“智能”guid到底是什么意思,但是为什么不把它转换成一个字符,然后按位置取出部分呢

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)
    
您可以使用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)
以下是您可以使用的.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)

这是你的名字。

干杯,伙计!这是一个简单而伟大的解决方案。我和查林德克斯·埃斯混在一起,事情变得失控了。谢谢你啊cmon,你难道不像我一样喜欢筑巢吗?干杯,伙计!这是一个简单而伟大的解决方案。我和查林德克斯·埃斯混在一起,事情变得失控了。感谢您AWW cmon,您不也像我一样喜欢嵌套
charindex
?感谢这个独特而有趣的基于JSON的解决方案。在将来的用例中一定要记住这一点。干杯感谢这一独特而有趣的基于JSON的解决方案。在将来的用例中一定要记住这一点。干杯