在存储过程中使用强制转换或转换功能

时间:2010-12-08 05:24:42

标签: stored-procedures

为什么我们必须在第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))

3 个答案:

答案 0 :(得分:1)

因为在你的select语句中你将变量与空格('')连接起来,这是一种varchar类型,你需要将它们转换为获得所需的结果。

从某种意义上说,它可能会给您一个错误,因为您的数据类型不同/不兼容。

答案 1 :(得分:1)

由于它们是不同的数据类型,因此无法直接连接二进制数据和文本字符串(varchar),这就是您需要CAST或CONVERT的原因。

答案 2 :(得分:1)

将其转换为VarChar会将数据从字节序列转换为字符文本。正如Flip所说,你无法直接连接不同的类型。通常二进制字符串用于图像,视频,流等,其中varchar通常是字符串数据,就像在文本文件中找到的那样。