2011-03-01 138 views

回答

8

您需要将BIGINT显式转换为VARCHAR:

DECLARE @ID BIGINT 
set @ID = 1323 

UPDATE School 
SET RegistrationFee = 'fee_' + CAST(@ID AS VARCHAR(15)) 
WHERE SchoolRegistrationId = 123 

T-SQL不会自动为您做到这一点 - 你需要明确的,它明确。

4

你不能连接一个字符串到一个数字。你必须把它转换:

SET RegistrationFee = 'fee_' + LTRIM(STR(@ID))

1

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个字符。

相关问题