此处,返回星号而不是字符串或二进制数据的列将被截断错误
CREATE TABLE #temp1(a varchar(4))
INSERT #temp1
SELECT MAX(12345)
SELECT*FROM #temp1
答案 0 :(得分:2)
CAST整数值变为可变长度的字符:
SELECT CAST(12345 as VARCHAR(4))
返回*因为定义的变量(4)的最大大小不是 足以保持这个数字。它不会产生任何错误,但*表示 长度太短而无法显示,因此结果不正确。
SELECT CAST(12345 AS VARCHAR(5))
会产生正确的结果:12345。实际上,在这种情况下 指定的字节数可以是5到8000之间的任何字节,或MAX。
CAST可变长度字符的字符值:
SELECT CAST('12345' AS VARCHAR(2))
将返回12,因为它返回最大字符数 允许:2。其余或输入字符串被截断。
再一次,在这种情况下,指定的字节数可以是任意的 从4到8000,或MAX。
您可以阅读更多here