【发布时间】:2015-12-10 20:59:57
【问题描述】:
我必须从表格上的 Guid 中截断前几个数字。是否可以仅使用 SQL 脚本来完成?还是我必须以编程方式进行?
谢谢!
【问题讨论】:
-
GUID 是存储为字符串还是
uniqueidentifier?似乎截断它会使它变得不那么“独特”。目的是什么?
标签: sql-server tsql substring guid truncate
我必须从表格上的 Guid 中截断前几个数字。是否可以仅使用 SQL 脚本来完成?还是我必须以编程方式进行?
谢谢!
【问题讨论】:
uniqueidentifier?似乎截断它会使它变得不那么“独特”。目的是什么?
标签: sql-server tsql substring guid truncate
要回答手头的直接问题(并假设列的名称是foo):
foo 是唯一标识符:
SELECT substring(convert(nvarchar(50), foo), 3)
foo 只是一个字符串:
SELECT substring(foo, 3)
3 只是删除前“少数”字符的任意起始偏移量。
话虽如此,这听起来像是一个 XY 问题。如果您遇到需要截断前几个字符的问题,那么在您的问题中列出该信息以及您所描述的内容听起来像是一个奇怪的请求,这一点很重要。但是,您也有权提出奇怪的要求。
【讨论】:
之前的答案非常好。另一种选择是使用美妙的RIGHT 函数。假设 Guid 是一个唯一标识符,那么它有 36 个字符。只需使用RIGHT(theguid, 34),例如
declare @temp as uniqueidentifier = newid();
select right(@temp, 34);
【讨论】: