将Varchar转换为固定长度

时间:2013-07-23 17:24:10

标签: sql-server casting

以下SQL存在任何问题吗?转换为varchar时,没有使用长度。

SELECT CAST('abc' AS varchar)

我应该使用

 SELECT CAST('abc' AS varchar(3))

3 个答案:

答案 0 :(得分:4)

如果您未指定varchar(n),那么n将被假定为30.例如:如果我们运行下面的查询,我们会得到30个字符的输出。

CAST('01234567890123456789012345678901234567890123456789012345678901234567890123456789' as varchar) 

另外,请查看以下msdn article以获得更清晰的信息。

答案 1 :(得分:0)

只要你的字符串不超过30个字符,你就没事了 SQL Server将尝试强制转换为30个字符的默认长度。

如果您尝试强制转换超过此长度的字符串,则字符串将被截断为30个字符。

示例:

DECLARE @Example VARCHAR(35) = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' -- 35 Characters
SELECT LEN(cast(@Example as varchar)) AS [Result]

Result
30

答案 2 :(得分:0)

如果您将使用强制转换将数据插入到具有固定长度的列中,则第二个语句将通过截断数据来帮助您避免“字符串或二进制数据将被截断”错误

SQLException : String or binary data would be truncated