为什么聚合函数返回星号而不是字符串或二进制数据截断错误

时间:2015-10-13 05:45:56

标签: sql sql-server-2008

此处,返回星号而不是字符串或二进制数据的列将被截断错误

CREATE TABLE #temp1(a varchar(4))

INSERT #temp1
SELECT MAX(12345)

SELECT*FROM #temp1

1 个答案:

答案 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