修改字段长度的sqlserver语句
  在SQL Server中,修改字段长度是一项常见的任务。这通常是因为数据类型的长度不足以容纳所需的数据,或者因为数据类型的长度过长而浪费了存储空间。在这篇文章中,我们将列举出10个修改字段长度的SQL Server语句,并解释每个语句的作用。
 
  1. 修改表中的字段长度
 
  ALTER TABLE table_name ALTER COLUMN column_name data_type(length);
 
  这个语句用于修改表中的字段长度。其中,table_name是要修改的表的名称,column_name是要修改的字段的名称,data_type是要修改的字段的数据类型,length是要修改的字段的长度。
 
  2. 修改表中的多个字段长度
 
  ALTER TABLE table_name ALTER COLUMN column1_name data_type(length), ALTER COLUMN column2_name data_type(length), ALTER COLUMN column3_name data_type(length);
 
  这个语句用于修改表中的多个字段的长度。其中,table_name是要修改的表的名称,column1_name、column2_name和column3_name是要修改的字段的名称,data_type是要修改的字段的数据类型,length是要修改的字段的长度。
 
  3. 修改表中的所有字段长度
 
  DECLARE @sql NVARCHAR(MAX) = N'';
 
  SELECT @sql += N'ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name)
    + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' ' +
    CASE WHEN c.system_type_id IN (165, 167, 173, 175, 231, 239) THEN 'VARCHAR'
        WHEN c.system_type_id IN (106, 108) THEN 'DECIMAL'
        ELSE UPPER(TYPE_NAME(c.system_type_id)) END
    + '(' + CAST(c.max_length AS VARCHAR(5)) + ');'
  lumns AS c
  INNER JOIN sys.tables AS t
  ON c.[object_id] = t.[object_id]
  INNER JOIN sys.schemas AS s
  ON t.[schema_id] = s.[schema_id]
  WHERE c.max_length > 50;
 
  EXEC sp_executesql @sql;
 
  这个语句用于修改表中的所有字段的长度。它使用了动态SQL,首先声明了一个变量@sql,然后使用SELECT语句生成ALTER TABLE语句,并将其添加到@sql变量中。最后,使用EXEC sp_executesql语句执行@sql变量中的所有ALTER TABLE语句。
 
  4. 修改表中的所有nvarchar字段长度
增加字段的sql语句 
  DECLARE @sql NVARCHAR(MAX) = N'';
 
  SELECT @sql += N'ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name)
    + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(' + CAST(c.max_length / 2 AS VARCHAR(5)) + ');'
  lumns AS c
  INNER JOIN sys.tables AS t
  ON c.[object_id] = t.[object_id]
  INNER JOIN sys.schemas AS s
  ON t.[schema_id] = s.[schema_id]
  WHERE c.system_type_id = 231;
 
  EXEC sp_executesql @sql;
 
  这个语句用于修改表中的所有nvarchar字段的长度。它使用了动态SQL,首先声明了一个变量@sql,然后使用SELECT语句生成ALTER TABLE语句,并将其添加到@sql变量中。最后,使用EXEC sp_executesql语句执行@sql变量中的所有ALTER TABLE语句。
 
  5. 修改表中的所有varchar字段长度
 
  DECLARE @sql NVARCHAR(MAX) = N'';
 
  SELECT @sql += N'ALTER TABLE ' + QUOTENAME(s.name) + '.' + QUOTENAME(t.name)
    + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' VARCHAR(' + CAST(c.max_length AS VARCHAR(5)) + ');'
  lumns AS c
  INNER JOIN sys.tables AS t
  ON c.[object_id] = t.[object_id]
  INNER JOIN sys.schemas AS s
  ON t.[schema_id] = s.[schema_id]
  WHERE c.system_type_id = 167;
 
  EXEC sp_executesql @sql;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。