为什么我们必须在第2和第3选择语句中使用强制转换或转换函数,以及通过转换或转换为varchar来实现的,varchar数据类型究竟在做什么?
DECLARE @mybin1 binary(5), @mybin2 binary(5)
SET @mybin1 = 0xFF
SET @mybin2 = 0xA5
-- No CONVERT or CAST function is necessary because this example
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2
-- A CONVERT or CAST function is necessary because this example
-- concatenates two binary strings plus a space.
SELECT CONVERT(varchar(5), @mybin1) + ' '
+ CONVERT(varchar(5), @mybin2)
-- Here is the same conversion using CAST
SELECT CAST(@mybin1 AS varchar(5)) + ' '
+ CAST(@mybin2 AS varchar(5))
答案 0 :(得分:1)
因为在你的select语句中你将变量与空格('')连接起来,这是一种varchar类型,你需要将它们转换为获得所需的结果。
从某种意义上说,它可能会给您一个错误,因为您的数据类型不同/不兼容。
答案 1 :(得分:1)
由于它们是不同的数据类型,因此无法直接连接二进制数据和文本字符串(varchar),这就是您需要CAST或CONVERT的原因。
答案 2 :(得分:1)
将其转换为VarChar会将数据从字节序列转换为字符文本。正如Flip所说,你无法直接连接不同的类型。通常二进制字符串用于图像,视频,流等,其中varchar通常是字符串数据,就像在文本文件中找到的那样。