if语句,在检查TSQL中的列长度时未按预期工作

时间:2015-10-20 17:05:22

标签: tsql

我想只更新列的大小,如果它当前小于我想要的大小。下面的这句话对我来说很有意义,但是当我运行它时......它会出现改变。为什么@len< 255?我可以验证相关列实际上是255.

我还可以验证'select @len - 1'是否出现在254中。

DECLARE @len int

SET @len = (select Cast(character_maximum_length As int) 
           from information_schema.columns  
           where table_name = 'myTable'
           And column_name = 'myCol')

IF (@len < 255)
    BEGIN
        Print 'No work.'
    END
    ELSE 
    BEGIN
         Print 'Alter table myTable Alter Column myCol varchar (255)'
    END

1 个答案:

答案 0 :(得分:1)

你已经交换了条件。如果长度小于255,您将更改字段:

IF (@len < 255)
BEGIN
    Print 'Alter table myTable Alter Column myCol varchar (255)'
END
ELSE
BEGIN
    Print 'No work.'
END