Sql server 只有随机id的第一个字符被插入到sql表中
我正在做一个大容量插入到一个表中。我有多个触发器将几列从批量插入插入到不同的表中。我生成长度为25的字母数字字符作为id。我创建了一个函数来实现这一点,在需要@id列值的地方调用这个函数。但我只插入了这些随机字符串的第一个数字 在调用函数的地方触发 函数SDS\u生成\u ID MyRand视图,因为我不能在自定义项中使用NEWID()Sql server 只有随机id的第一个字符被插入到sql表中,sql-server,sql-server-2008,relational-database,sql-function,database-trigger,Sql Server,Sql Server 2008,Relational Database,Sql Function,Database Trigger,我正在做一个大容量插入到一个表中。我有多个触发器将几列从批量插入插入到不同的表中。我生成长度为25的字母数字字符作为id。我创建了一个函数来实现这一点,在需要@id列值的地方调用这个函数。但我只插入了这些随机字符串的第一个数字 在调用函数的地方触发 函数SDS\u生成\u ID MyRand视图,因为我不能在自定义项中使用NEWID() CREATE VIEW [dbo].[MyRAND] AS select newid() as randID GO 如有任何帮助,我们将不胜感激 CREAT
CREATE VIEW [dbo].[MyRAND]
AS
select newid() as randID
GO
如有任何帮助,我们将不胜感激
CREATE FUNCTION SDS_GENERATE_ID()
RETURNS VARCHAR
您需要指定长度,否则最终将收到单个字符
当前形式的函数只返回低于值的值
0
通过指定长度进行修改时,返回如下值
CREATE FUNCTION SDS_GENERATE_ID()
RETURNS VARCHAR(25)
给予
函数返回类型中没有指定字符长度
alter FUNCTION SDS_GENERATE_ID()
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @r varchar(25)
SELECT @r = coalesce(@r, '') + n
FROM (SELECT top 25
CHAR(number) n FROM
master..spt_values
WHERE type = 'P' AND
(number between ascii(0) and ascii(9)
or number between ascii('A') and ascii('Z')
or number between ascii('a') and ascii('z'))
ORDER BY (select id from employee)) a
return @r
END;
GO
注意:在上述返回类型中替换所需的长度“仅一个字符…”几乎总是意味着您声明了一个varchar,但没有在某处指定长度。
CREATE FUNCTION SDS_GENERATE_ID()
RETURNS VARCHAR(25)
01234656789..
alter FUNCTION SDS_GENERATE_ID()
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @r varchar(25)
SELECT @r = coalesce(@r, '') + n
FROM (SELECT top 25
CHAR(number) n FROM
master..spt_values
WHERE type = 'P' AND
(number between ascii(0) and ascii(9)
or number between ascii('A') and ascii('Z')
or number between ascii('a') and ascii('z'))
ORDER BY (select id from employee)) a
return @r
END;
GO