Saturday, 15 March 2014

sql server - Iterating through each column in my SQL table -



sql server - Iterating through each column in my SQL table -

i have sql table 50 columns. want able iterate through each 1 similar foreach loop. when iterate through each column, want check see if there's single double quote appended @ end, , if so, remove it.

i have solution built out explicitly define column names, see below:

select brandname = (case when (brandname '%"') left(brandname, len(brandname) - 1) else brandname end), emailsubject = (case when (emailsubject '%"') left(emailsubject , len(emailsubject ) - 1) else emailsubject end), -- , on... tablename

this works fine, introduces possibility of error. so, why want (pseudocode):

foreach column c in table if (c.endswith('"')) c.removeendcharacter()

is possible, , if can provide examples on how might implement such solution in t-sql?

thanks!

you can generate tsql statements update table code below. execute statement, copy/paste output new query window , run. alternatively, utilize query below cursor , execute output on each iteration.

select 'update [' + c.table_schema + '].[' + c.table_name + '] set [' + c.column_name + '] = left([' + c.column_name + '], len([' + c.column_name + ']) - 1) [' + c.column_name + '] ''%"''' information_schema.columns c bring together information_schema.tables t on t.table_schema = c.table_schema , t.table_name = c.table_name --for simple demo purposes, assume tables only. t.table_type = 'base table' --did miss info types? , c.data_type in ('nvarchar', 'varchar', 'nchar', 'char') --replace values corresponding schema/table name. , c.table_schema = 'dbo' , c.table_name = 'yourtablename' order c.table_schema, c.table_name, c.ordinal_position

sql sql-server tsql foreach

No comments:

Post a Comment