代码之家  ›  专栏  ›  技术社区  ›  Edito

如何更改特定表格的CHARACTER_MAX_LENGTH

  •  0
  • Edito  · 技术社区  · 10 年前

    我有多个表,其中有需要通过外键链接的列,问题是这些列中的某些列具有不同的character_max_length。如何更新这些特定的表?

    列的示例select语句:

    SELECT column_name, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH 
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE UPPER(column_name) LIKE '%MUNT%'
    

    这给了我:

    enter image description here

    现在让我说我必须把所有的都改成5

    我用过 this code 在更改数据类型之前,也许这会有所帮助?

    谢谢你考虑我的问题

    2 回复  |  直到 8 年前
        1
  •  1
  •   Edito    10 年前

    您是否尝试过:

    Alter tabel tableName alter column columnName NVARCHAR(5)
    

    或者尝试更通用的版本:

    use [YourDatabaseName]
    
    declare @tn nvarchar(128)
    declare @cn nvarchar(128)
    declare @sql as nvarchar(1000)
    
    declare c cursor for 
        select table_name,column_name
        from information_schema.columns 
        where TABLE_NAME not in (select TABLE_NAME from INFORMATION_SCHEMA.VIEWS)
        AND UPPER(column_name) LIKE '%MUNT%'
    open c
    fetch next from c into @tn, @cn
    
    while @@FETCH_STATUS = 0
    begin
        set @sql = 'alter table ' + @tn + ' alter column ' 
            + @cn + ' nvarchar(5)'
        exec sp_executesql @sql
        fetch next from c into @tn, @cn
    end
    close c
    deallocate c
    
        2
  •  0
  •   podiluska    10 年前

    可以通过用户界面或使用 ALTER TABLE