如何将SQL Server中字段的默认值设置为GUID的子字符串?

时间:2014-02-01 17:52:23

标签: sql-server

有没有办法在SQL Server 2012数据库的表中设置字段的默认值,这样我就不需要输入它了?

我意识到这并没有设定完美的副本,但它足以满足我的需求。

guid.ToString().Substring(10);

2 个答案:

答案 0 :(得分:6)

CREATE TABLE dbo.fooblat
(
  id INT, 
  splungemort CHAR(10) NOT NULL DEFAULT LEFT(NEWID(),10)
);

INSERT dbo.fooblat(id) VALUES(1),(2);

SELECT id,splungemort FROM dbo.fooblat;

结果:

id  splungemort
1   F2E81CC6-F  
2   7B04996B-8

如果LEFT()未提供您所关注的十个字符,则可以查找RIGHT()SUBSTRING()

http://msdn.microsoft.com/en-us/library/ms181984.aspx

答案 1 :(得分:0)

首先,字符串格式的GUID的默认长度为36。

-- default length
select len(newid())

其次,字符串包含连字符。

-- sample number
select newid()

8260C133-5123-4C61-AD6E-74BC355E3E3B

第三,我不知道你为什么要在结果中加一个连字符。左,右或子串(mid)可用于抓取字符。

-- Grab ten characters
select left(replace(newid(), '-', ''), 10)

最后但并非最不重要的是,无法保证结果是唯一的。