proudpaki9
asked on
Rtrim function HElppppppppppppp
I have about 36 fields in a table. All 36 fields need to be trimed. (more specific Rtrim). Is there any way I can Rtrim all 36 fields in one shot instead of typing rtrim(fieldname) for all 36 fields.
Thanks
Thanks
You couldve done it by the time it took to post this question and get the answer. How about you type the fields here and il write the query for you
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I don't think you can.
What you can do is generate a script that will generate the sql statement with necesary fields having rtrim() around them.
If that is in a stored procedure, i guess you could then execute that sql dynamically...
What you can do is generate a script that will generate the sql statement with necesary fields having rtrim() around them.
If that is in a stored procedure, i guess you could then execute that sql dynamically...
Here you go
drop table #sp_Columns
go
Drop Table #Columns
go
Create table #Columns (ColumnId Int Identity(1,1),ColumnNameTx t Varchar(50))
go
Declare @MaxCol int
DEclare @CurrCol Int
DEclare @TableName Varchar(50)
Declare @ColumnName Varchar(50)
declare @SQLText varchar(2000)
set @TableName='T_RISK'
Create Table #sp_Columns (TABLE_QUALIFIER varchar(100),
TABLE_OWNER varchar(100),
TABLE_NAME varchar(100),
COLUMN_NAME varchar(100),
DATA_TYPE varchar(100),
[TYPE_NAME] varchar(100),
[PRECISION] varchar(100),
LENGTH Int,
SCALE varchar(100),
RADIX varchar(100),
NULLABLE varchar(100),
REMARKS varchar(3500),
COLUMN_DEF varchar(100),
SQL_DATA_TYPE varchar(100),
SQL_DATETIME_SUB varchar(100),
CHAR_OCTET_LENGTH varchar(100),
ORDINAL_POSITION varchar(10),
IS_NULLABLE varchar(10),
SS_DATA_TYPE varchar(100))
Insert Into #sp_Columns exec sp_Columns @TableName
Insert Into #Columns
select COLUMN_NAME from #sp_Columns
Select @MaxCol=Max(ColumnId),@Cur rCol=Min(C olumnId)fr om #Columns
Set @SQLText='Select '
While @CurrCol<=@MaxCol Begin
select @ColumnName=ColumnNameTxt from #Columns where ColumnId=@CurrCol
set @SQLText=@SQLText+ 'rtrim('+@ColumnName+') as ' +@ColumnName
if @CurrCol<>@MaxCol Begin
set @SQLText=@SQLText+','
End
set @CurrCol=@CurrCol+1
end
Set @SQLText=@SQLText+' from '+@TableName
exec ( @SQLText)
drop table #sp_Columns
go
Drop Table #Columns
go
Create table #Columns (ColumnId Int Identity(1,1),ColumnNameTx
go
Declare @MaxCol int
DEclare @CurrCol Int
DEclare @TableName Varchar(50)
Declare @ColumnName Varchar(50)
declare @SQLText varchar(2000)
set @TableName='T_RISK'
Create Table #sp_Columns (TABLE_QUALIFIER varchar(100),
TABLE_OWNER varchar(100),
TABLE_NAME varchar(100),
COLUMN_NAME varchar(100),
DATA_TYPE varchar(100),
[TYPE_NAME] varchar(100),
[PRECISION] varchar(100),
LENGTH Int,
SCALE varchar(100),
RADIX varchar(100),
NULLABLE varchar(100),
REMARKS varchar(3500),
COLUMN_DEF varchar(100),
SQL_DATA_TYPE varchar(100),
SQL_DATETIME_SUB varchar(100),
CHAR_OCTET_LENGTH varchar(100),
ORDINAL_POSITION varchar(10),
IS_NULLABLE varchar(10),
SS_DATA_TYPE varchar(100))
Insert Into #sp_Columns exec sp_Columns @TableName
Insert Into #Columns
select COLUMN_NAME from #sp_Columns
Select @MaxCol=Max(ColumnId),@Cur
Set @SQLText='Select '
While @CurrCol<=@MaxCol Begin
select @ColumnName=ColumnNameTxt from #Columns where ColumnId=@CurrCol
set @SQLText=@SQLText+ 'rtrim('+@ColumnName+') as ' +@ColumnName
if @CurrCol<>@MaxCol Begin
set @SQLText=@SQLText+','
End
set @CurrCol=@CurrCol+1
end
Set @SQLText=@SQLText+' from '+@TableName
exec ( @SQLText)
There is a line set @TableName='T_RISK'
set the tablename to whatever you want
set the tablename to whatever you want
Yep, best way is to generate the statement, then copy/paste to run it:
DECLARE @sql VARCHAR(8000)
SET @sql = 'UPDATE yourTableName ' + CHAR(13) +
'SET '
SELECT @sql = @sql + '[' + column_name + '] = RTRIM([' + column_name + ']), ' + CHAR(13) + SPACE(4)
FROM INFORMATION_SCHEMA.columns
WHERE table_name = 'yourTableName'
AND data_type LIKE 'varchar%'
SET @sql = LEFT(RTRIM(@sql), LEN(@sql) - 3)
PRINT @sql
DECLARE @sql VARCHAR(8000)
SET @sql = 'UPDATE yourTableName ' + CHAR(13) +
'SET '
SELECT @sql = @sql + '[' + column_name + '] = RTRIM([' + column_name + ']), ' + CHAR(13) + SPACE(4)
FROM INFORMATION_SCHEMA.columns
WHERE table_name = 'yourTableName'
AND data_type LIKE 'varchar%'
SET @sql = LEFT(RTRIM(@sql), LEN(@sql) - 3)
PRINT @sql
sorry
UPDTE BLah set = Rtrim(Blah) sorry