Accepted answer
-
Yitzhak Khabinsky 20,551 Reputation points
2022-01-18T19:48:40.927+00:00 Hi @zoe Ohara ,
Please try the following.
Notable points:
-
IIF()
instead ofCASE
statement. - Use of
QUOTENAME()
function.
SQL
SELECT sql='alter table ' + QUOTENAME(d.name) + ' alter column ' + QUOTENAME(a.name) + ' char(' + CONVERT(VARCHAR(20), a.prec) + ')' + IIF(a.isnullable=0, ' NOT NULL', ' NULL') ,d.name AS Tablename, b.name AS datatype FROM syscolumns a INNER JOIN systypes b ON a.xtype=b.xusertype INNER JOIN sysobjects d ON a.id=d.id WHERE d.xtype='U' AND d.name<>'dtproperties' AND b.name IN ('varchar', 'nvarchar') ;
2 additional answers
Sort by: Most helpful
-
Michael Taylor 40,926 Reputation points
2022-01-18T19:42:24.2+00:00 For the CASE itself try something like this:
CASE(a.isnullable) WHEN 1 THEN 'NULL' ELSE '' END
-