sql >> Databáze >  >> RDS >> Sqlserver

Převod datového typu Char na Nvarchar

Výběr z INFORMATION_SCHEMA.COLUMNS je dobrý způsob, jak určit, které sloupce je třeba převést,

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';

Nelze jej však použít k přímé změně datového typu sloupce. ALTER TABLE se používá k úpravě datových typů sloupců:

ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);

Když už jste u toho, nepoužívejte NVARCHAR(MAX) pokud to není nezbytně nutné. Ujistěte se, že vaše datové typy mají velikost specificky pro daný atribut. Pokud váš CHAR sloupce již mají správnou velikost, použijte k generování následující skript ALTER TABLE prohlášení:

SELECT  'ALTER TABLE ' +
        QUOTENAME(TABLE_SCHEMA) + '.' +
        QUOTENAME(TABLE_NAME) +
        ' ALTER COLUMN ' +
        QUOTENAME(COLUMN_NAME) +
        ' NVARCHAR(' +
        CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(4)) + ');'
FROM    INFORMATION_SCHEMA.COLUMNS
WHERE   DATA_TYPE = 'char';

Mějte na paměti, že tím se vygenerují pouze příkazy ALTER TABLE, budete muset zkopírovat výsledky a spustit je na nové kartě, abyste mohli změnit datové typy.



  1. ztráta hodnot null filtrování výsledků dotazu SQL pomocí příkazu where

  2. Rozdíl mezi kódováním a řazením?

  3. proč varchar(max) neukládá data více než 8000 znaků

  4. PHP a MySQL:Porovnání měsíce a dne s dynamickým rokem