找出列是否有varchar 20

Wha*_*sUP 1 sql sql-server alter sql-server-2008

目标:
找出列名Firstname是否有varchar(20).如果是,请更改表等.

问题:
我有问题要查明列名是否包含varchar 20(如果存在)所有内容都发生在SQL Server 2008 R2中

表职员
栏目:

Firstname varchar(20)  
Lastname varchar(100)
if Exists()   // Find out if column Firstname has varchar(20)
begin 

   // Alter table and its specific column

end 
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 6

COLUMNS信息架构视图是非常理想的.

SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = [table] AND COLUMN_NAME = [column]
AND DATA_TYPE = 'varchar' AND CHARACTER_MAXIMUM_LENGTH = 20
Run Code Online (Sandbox Code Playgroud)


Bog*_*ean 5

IF EXISTS
    (SELECT *
    FROM    sys.columns c
    WHERE   c.object_id = OBJECT_ID('MySchema.MyTable')
    AND c.name = 'MyColumn'
    AND c.system_type_id = 167 --167 = varchar SELECT * FROM sys.types WHERE name = 'varchar'
    AND c.max_length = 20)
BEGIN
    ALTER TABLE MySchema.MyTable
    ALTER COLUMN MyColumn VARCHAR(25) NULL; --or NOT NULL and/or DEFAULT ...
END
Run Code Online (Sandbox Code Playgroud)