Solución:
Necesita convertir explícitamente su bigint a varchar:
DECLARE @ID BIGINT
set @ID = 1323
UPDATE School
SET RegistrationFee="fee_" + CAST(@ID AS VARCHAR(15))
WHERE SchoolRegistrationId = 123
T-SQL no hará esto automáticamente por usted; debe ser explícito y claro al respecto.
No puede concatenar una cadena a un número. Tienes que convertirlo:
SET RegistrationFee="fee_" + LTRIM(STR(@ID))
SQL Server convierte automáticamente los datos de un tipo de datos a otro. Esta es la conversión implícita. Su script tiene un proceso con diferentes tipos (varchar y bigint). Bigint es un tipo numérico exacto. “Las expresiones de caracteres que se están convirtiendo a un tipo de datos numérico exacto deben constar de dígitos, un punto decimal y un signo más (+) o menos (-) opcional. Los espacios en blanco iniciales se ignoran. Los separadores de comas, como el separador de miles en 123.456,00 , no están permitidos en la cadena. ” (consulte el enlace https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-type-conversion-database-engine).
Debe utilizar la conversión explícita para forzar. No se produce una conversión implícita de forma automática. Como la función CAST.
Elija uno según el tipo de datos de la columna RegistrationFee en las siguientes expresiones.
'fee_' + CAST(@ID AS NVARCHAR(25))
'fee_' + CAST(@ID AS VARCHAR(25))
'fee_' + CAST(@ID AS CHAR(25))
'fee_' + CAST(@ID AS NCHAR(25))
– El valor máximo de Bigint es ‘9,223,372,036,854,775,807’ que tiene 25 caracteres.