A Microsoft extension to the ANSI SQL language that includes procedural programming, local variables, and various support functions.
Try the following code to generate the update statements dynamically. Once you generated them you can either loop through the table and execute each statement using sp_ExecuteSQL procedure or you can simply highlight the column, copy values into a separate query window and execute.
DECLARE @t TABLE (id INT IDENTITY PRIMARY KEY, [Table Name] VARCHAR(30), [Column Names] VARCHAR(MAX))
INSERT INTO @t ([Table Name], [Column Names])
VALUES
('EVENT_TYPE' -- Table Name - varchar(30)
, 'flow_nm, event_type_txt, event_type_status_txt' -- Column Names - varchar(max)
), ('event_tracking_type', 'event_tracking_type_nm, event_tracking_type_desc, active_ind')
SELECT * FROM @t;
;WITH cte AS (SELECT id, [table name] AS table_name, LTRIM(RTRIM(v.value)) AS column_name FROM @t t
CROSS APPLY STRING_SPLIT([t].[Column Names], ',') v
),
cte2 AS (SELECT cte.id, col.TABLE_SCHEMA, col.TABLE_NAME, col.COLUMN_NAME,
col.CHARACTER_MAXIMUM_LENGTH AS [Length] FROM cte INNER JOIN INFORMATION_SCHEMA.columns col ON
cte.table_name = col.TABLE_NAME AND cte.column_name = col.COLUMN_NAME AND col.TABLE_SCHEMA = 'dbo'
AND col.DATA_TYPE LIKE '%char')
--SELECT * FROM cte2
SELECT id, 'UPDATE ' + QUOTENAME(table_name) + ' SET ' + STRING_AGG(CAST(QUOTENAME(column_name) + '=''' AS VARCHAR(MAX)) +
(REPLICATE('Z', [Length])) + '''', ',') WITHIN GROUP (ORDER BY cte2.Length DESC)
AS [Statement]
FROM cte2
GROUP BY id, cte2.TABLE_SCHEMA, cte2.TABLE_NAME