查看列长度更改,使用大小写和替换创建时

时间:2016-05-27 11:42:25

标签: sql sql-server sql-server-2012

查看列长度(Postcode)已增加到varchar(8000)!,从基础表创建时,它的列长度仅为varchar(8)

数据库是SQL Server 2012。

create view v_testing as
    select Postcode = CASE WHEN LEN(A.RealPostcode) = 0 THEN NULL
                           ELSE REPLACE(A.RealPostcode,' ','')
                      END,
           A.RealPostcode
    from dbo.Table A;

1 个答案:

答案 0 :(得分:2)

https://msdn.microsoft.com/en-us/library/ms186862.aspx

  

如果string_expression的类型不是varchar(max)或   nvarchar(max),REPLACE截断返回值为8,000字节。至   返回值大于8,000字节,string_expression必须是   明确地转换为大值数据类型。

所以只需使用cast函数:

create view v_testing as
    select Postcode = CASE WHEN LEN(A.RealPostcode) = 0 THEN NULL
                           ELSE CAST(REPLACE(A.RealPostcode,' ','') AS VARCHAR(8))
                      END,
           A.RealPostcode
    from dbo.Table A;