是否可以从 T-SQL 中的 Guid 生成子字符串?
Is it possible to make a substring out of a Guid in T-SQL?
我必须截断 table 上 Guid 的前几位数字。是否可以仅使用 SQL 脚本来完成?或者我必须以编程方式进行?
谢谢!
回答手头的直接问题(并假设列的名称是 foo
):
foo
是唯一标识符:
SELECT substring(convert(nvarchar(50), foo), 3)
foo
只是一个字符串:
SELECT substring(foo, 3)
3
只是删除前 "few" 个字符的任意起始偏移量。
话虽如此,这听起来像是一个 XY 问题。如果您 运行 遇到需要截断前几个字符的问题,请务必在您的问题中列出该信息以及您所描述的听起来很奇怪的要求。但是,您也有权提出奇怪的请求。
前面的回答非常好。另一种选择是使用美妙的 RIGHT
函数。假设 Guid 是一个唯一标识符,那么它有 36 个字符。只需使用 RIGHT(theguid, 34)
,例如
declare @temp as uniqueidentifier = newid();
select right(@temp, 34);
我必须截断 table 上 Guid 的前几位数字。是否可以仅使用 SQL 脚本来完成?或者我必须以编程方式进行?
谢谢!
回答手头的直接问题(并假设列的名称是 foo
):
foo
是唯一标识符:
SELECT substring(convert(nvarchar(50), foo), 3)
foo
只是一个字符串:
SELECT substring(foo, 3)
3
只是删除前 "few" 个字符的任意起始偏移量。
话虽如此,这听起来像是一个 XY 问题。如果您 运行 遇到需要截断前几个字符的问题,请务必在您的问题中列出该信息以及您所描述的听起来很奇怪的要求。但是,您也有权提出奇怪的请求。
前面的回答非常好。另一种选择是使用美妙的 RIGHT
函数。假设 Guid 是一个唯一标识符,那么它有 36 个字符。只需使用 RIGHT(theguid, 34)
,例如
declare @temp as uniqueidentifier = newid();
select right(@temp, 34);