下面的 SQL 有问题吗?这里在转换为 varchar 时没有使用长度。
SELECT CAST('abc' AS varchar)
我应该使用
SELECT CAST('abc' AS varchar(3))
下面的 SQL 有问题吗?这里在转换为 varchar 时没有使用长度。
SELECT CAST('abc' AS varchar)
我应该使用
SELECT CAST('abc' AS varchar(3))
如果您不指定varchar(n)
thenn
将被假定为 30。例如:如果我们运行下面的查询,我们会得到 30 个字符的输出。
CAST('01234567890123456789012345678901234567890123456789012345678901234567890123456789' as varchar)
另请查看以下msdn 文章以获得更清晰的信息。
只要您的字符串不超过 30 个字符,就可以了。
SQL Server 将尝试强制转换为默认长度,即 30 个字符。
如果您尝试转换超过此长度的字符串,您的字符串将被截断为 30 个字符。
例子:
DECLARE @Example VARCHAR(35) = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' -- 35 Characters
SELECT LEN(cast(@Example as varchar)) AS [Result]
Result
30
如果您将使用强制转换将数据插入到具有固定长度的列中,则第二条语句将通过截断数据来帮助您避免“字符串或二进制数据将被截断”错误