【问题标题】:Is it possible to make a substring out of a Guid in T-SQL?是否可以从 T-SQL 中的 Guid 中创建子字符串?
【发布时间】:2015-12-10 20:59:57
【问题描述】:

我必须从表格上的 Guid 中截断前几个数字。是否可以仅使用 SQL 脚本来完成?还是我必须以编程方式进行?

谢谢!

【问题讨论】:

  • GUID 是存储为字符串还是uniqueidentifier?似乎截断它会使它变得不那么“独特”。目的是什么?

标签: sql-server tsql substring guid truncate


【解决方案1】:

要回答手头的直接问题(并假设列的名称是foo):

foo 是唯一标识符:

SELECT substring(convert(nvarchar(50), foo), 3)

foo 只是一个字符串:

SELECT substring(foo, 3)

3 只是删除前“少数”字符的任意起始偏移量。

话虽如此,这听起来像是一个 XY 问题。如果您遇到需要截断前几个字符的问题,那么在您的问题中列出该信息以及您所描述的内容听起来像是一个奇怪的请求,这一点很重要。但是,您也有权提出奇怪的要求。

【讨论】:

    【解决方案2】:

    之前的答案非常好。另一种选择是使用美妙的RIGHT 函数。假设 Guid 是一个唯一标识符,那么它有 36 个字符。只需使用RIGHT(theguid, 34),例如

    declare @temp as uniqueidentifier = newid();
    select right(@temp, 34);
    

    【讨论】:

    • 我想知道为什么有人不赞成这个?该解决方案有效,并提出了另一种思考问题的方式。
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多