我需要更改一些数据类型。我尝试使用CAST
关键字,但它没有解决问题。有关如何使用CAST
语句重写这两行的任何建议吗?
VarChar(100)
投射到VarChar(20)
时可能会发生数据丢失。代码:
SELECT TOP 1 @variableId = variableId
FROM @tempTable
NVarChar(512)
投射到NVarChar
时可能会发生数据丢失。代码:
SELECT myVariable
FROM tableName
我尝试过如下操作,但仍会产生错误:
CAST((myVariable) as nvarchar)
答案 0 :(得分:2)
CAST
用于在数据类型之间进行转换。听起来更像是应该使用LEFT
代替:
SELECT TOP 1 @variableId = LEFT(variableId,20)
FROM @tempTable
这不会给你任何警告,因为系统假设你已经知道你将丢失正确的80个字符。
答案 1 :(得分:0)
使用CONVERT
代替CAST
:
CONVERT(nvarchar, myVariable)
是一种有效的语法,还有:
CONVERT(varchar(20), myVariable)
但是要获取字符串的一部分,我们会使用SUBSTRING()
或LEFT()
或RIGHT()
这样的函数:
SUBSTRING( value_expression , start_expression , length_expression )
返回字符,二进制,文本或图像表达式的一部分。
LEFT ( character_expression , integer_expression )
返回具有指定字符数的字符串的左侧部分。
RIGHT ( character_expression , integer_expression )
返回具有指定字符数的字符串的右侧部分。