TSQL-拆分GUID/唯一标识符
案例:我们在一个表中有智能guid,需要从中提取第二和第四部分。我正在考虑编写一个函数,它可以接受@partnumber并返回它的提取值 e、 g 第一部分=A7DDAA60,第二部分=C33A,第三部分=4D7A,第四部分= A2D8和第五部分=ABF20127C9AE 基于@partnumber,它将返回其中一个值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到底是什么意思,但为什么不直接将其转换为字符并按位置取出部分呢
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的解决方案。在将来的用例中一定要记住这一点。干杯