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)
该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)
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)