0

我在表 CLIENTDET 中有一个名为“CLIENTDATA”的列,并且有一个类似于“last-ST - Tranactions - Challan Details - Int”的数据。计算。- 兴趣报告 - N'。

情况1:

当我写一个查询

SELECT CLIENTDATA,
       LEN(CLIENTDATA)
FROM   CLIENTDET  

在这种情况下,我得到正确的数据和长度为“75”。

案例二:

当我写一个查询

SELECT CAST(
           CASE 
                WHEN CLIENTDATA IS NULL THEN ''
                ELSE CLIENTDATA
           END AS 
           VARCHAR
       ),
       LEN(
           CAST(
               CASE 
                    WHEN CLIENTDATA IS NULL THEN ''
                    ELSE CLIENTDATA
               END 
               AS VARCHAR
           )
       )
FROM CLIENTDET

In this case i am not getting correct data as in Case 1, here length is '30'.

有什么我在这里遗漏或不理解的吗?.... 附上图片

在此处输入图像描述

4

1 回答 1

3

在不指定长度的情况下将文字转换为字符类型时,
默认为 30。因此在使用字符数据类型时需要指定足够的列长度。 参考。
这里是msdn参考

例如

Declare @a varchar(100)
Select @a='123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890'

Select LEN(CAST(@a as Varchar)),LEN(@a)

作为附加信息

当声明一个 VARCHAR 变量而不定义长度时,它将默认为 1。

DECLARE @a VARCHAR
SET @a = 'ABCDE'
SELECT @a 

返回:“1”

于 2013-01-17T09:30:12.527 回答