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