DECLARE @ID BIGINT
set @ID = 1323
UPDATE School
SET RegistrationFee = 'fee_' + @ID --<<<<error
Where SchoolRegistrationId = 123
将数据类型varchar转换为bigint时出错。将数据类型bigint转换为varchar时出错。
DECLARE @ID BIGINT
set @ID = 1323
UPDATE School
SET RegistrationFee = 'fee_' + @ID --<<<<error
Where SchoolRegistrationId = 123
将数据类型varchar转换为bigint时出错。将数据类型bigint转换为varchar时出错。
您需要将BIGINT显式转换为VARCHAR:
DECLARE @ID BIGINT
set @ID = 1323
UPDATE School
SET RegistrationFee = 'fee_' + CAST(@ID AS VARCHAR(15))
WHERE SchoolRegistrationId = 123
T-SQL不会自动为您做到这一点 - 你需要明确的,它明确。
你不能连接一个字符串到一个数字。你必须把它转换:
SET RegistrationFee = 'fee_' + LTRIM(STR(@ID))
SQL Server自动将数据从一种数据类型转换为另一种。这是隐式转换。你的脚本有一个不同类型的进程(varchar和bigint)。 Bigint是一个确切的数字类型。 “正在转换为精确的数字数据类型的字符表达式必须由数字,小数点和可选的加号(+)或减号( - )组成,逗号分隔符(例如千位分隔符)会被忽略。字符串中不允许使用123,456.00。“ (请参阅https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-type-conversion-database-engine链接。)
您应该使用显式转换强制它不会自动发生隐式转换。如CAST功能。
选择一个依赖于RegistrationFee列的数据类型在下列表达式中。
'fee_' + CAST(@ID AS NVARCHAR(25))
'fee_' + CAST(@ID AS VARCHAR(25))
'fee_' + CAST(@ID AS CHAR(25))
'fee_' + CAST(@ID AS NCHAR(25))
- Bigint的最大值是'9,223,372,036,854,775,807',它有25个字符。