首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TSQL -拆分GUID/UNIQUEIDENTIFIER

TSQL -拆分GUID/UNIQUEIDENTIFIER
EN

Stack Overflow用户
提问于 2020-07-08 18:10:30
回答 2查看 442关注 0票数 0

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

例如:

代码语言:javascript
复制
DECLARE @Guid UNIQUEIDENTIFIER = 'A7DDAA60-C33A-4D7A-A2D8-ABF20127C9AE'

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

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

我正试图找出如何最有效地拆分它(STRING_SPLIT并不保证订单)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-08 18:24:43

我不太清楚你所说的“聪明的”到底是什么意思,但为什么不直接把它扔到煤焦里,然后按位置拔出零件呢?

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2020-07-08 18:35:37

你可以用,OPENJSON

代码语言:javascript
复制
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)

这是小提琴

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62801049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档