Sql server 生成随机数(SQL Server)

Sql server 生成随机数(SQL Server),sql-server,vba,excel,Sql Server,Vba,Excel,我插入用户名的第一个字母和最后一个字母+2个随机数字以生成收据编号。我使用VBA通过ADODB SQL Server连接来实现这一点 i、 e.对于约翰·多伊来说,将是这样的:JE43 INSERT INTO [dbo].[TEP_ReceiptID] ([ReceiptID]) Values (UCase(Left(Application.username, 1) & Right(Application.username, 1)) & cast(rand()*99 as int

我插入用户名的第一个字母和最后一个字母+2个随机数字以生成收据编号。我使用VBA通过ADODB SQL Server连接来实现这一点

i、 e.对于约翰·多伊来说,将是这样的:JE43

INSERT INTO [dbo].[TEP_ReceiptID] ([ReceiptID]) Values (UCase(Left(Application.username, 1) & Right(Application.username, 1)) & cast(rand()*99 as int)))
问题是我遇到了与此逻辑有关的问题此错误:

将varchar值“JE”转换为数据类型时,转换失败 内部的

帮忙

编辑

我试过这个:

INSERT INTO [dbo].[TEP_ReceiptID] ([ReceiptID]) Values (Cast(UCase(Left(Application.username, 1) & Right(Application.username, 1)) & cast(rand()*99 as int))) as nvarchar)

但这并不能解决问题。

在将“string”与“int”串联后,稍后将进行强制转换,请尝试以下操作:

INSERT INTO [dbo].[TEP_ReceiptID] ([ReceiptID]) Values (UCase(Left(username, 1) & Right(username, 1)) & cast(cast(rand()*99 as int) as nvarchar))

我不再喜欢VBA,但我认为您在编辑代码中使用括号时遇到了一些问题,请尝试以下方法:

INSERT INTO [dbo].[TEP_ReceiptID] ([ReceiptID]) Values (UCase(Left(Application.username, 1) & Right(Application.username, 1)) & cast(cast(rand()*99 as int) as varchar(2)))

你不明白这个错误吗?请检查我的编辑。您仍在尝试连接int和nvarchar字符串“+1”将生成错误,“字符串”不是整数请查看链接。您的数值需要是一个varchar.CAST/CONVERT您的随机数,而不是整数thing@OdaySalim,请注意,更正后的方法将生成一个随机数,但不能保证它是唯一的。