Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 只有随机id的第一个字符被插入到sql表中_Sql Server_Sql Server 2008_Relational Database_Sql Function_Database Trigger - Fatal编程技术网

Sql server 只有随机id的第一个字符被插入到sql表中

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

我正在做一个大容量插入到一个表中。我有多个触发器将几列从批量插入插入到不同的表中。我生成长度为25的字母数字字符作为id。我创建了一个函数来实现这一点,在需要@id列值的地方调用这个函数。但我只插入了这些随机字符串的第一个数字

在调用函数的地方触发

函数SDS\u生成\u ID

MyRand视图,因为我不能在自定义项中使用NEWID()

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