【问题标题】:Trim All columns in a temp table and Select data修剪临时表中的所有列并选择数据
【发布时间】:2011-08-31 21:46:48
【问题描述】:

有一个简单的问题。

我首先选择一个数据集 INTO 临时表

临时表的列中包含的数据,其中包含额外的空格。许多列都带有额外的空格。所以,我用谷歌搜索检查如何删除列中的所有空格。

找到这个解决方案SQL Server: How to perform Rtrim on all varchar columns of a table

但是,我尝试为临时表实现相同的功能,但它不能按原样工作,因为临时表是在不同的架构中创建的。

所以,我修改了相同的并尝试了。但没有运气。 有人能指出我哪里做错了吗?

代码如下:

DECLARE @Op NVARCHAR(1000)
DECLARE @table_name AS VARCHAR(300) 

SET @table_name = (SELECT TOP 1 [name] FROM tempdb..sysobjects WHERE name LIKE '#tempFinalResults%')

SET @Op = ' UPDATE ' + @table_name + ' SET COLUMN_NAME = LTRIM(RTRIM(COLUMN_NAME)) FROM tempDB.information_Schema.Columns WHERE DATA_Type IN (''varchar'', ''char'', ''nchar'', ''nvarchar'')'

Exec sp_executesql @Op

Select * from #tempFinalResults

谢谢各位。欣赏它。

谢谢, 肖恩

【问题讨论】:

  • 你需要SELECT c.name FROM tempdb.sys.columns c WHERE object_id = object_id('tempdb..#tempFinalResults')
  • 插入数据的意义何在,然后 THEN 修剪它。为什么不在插件上修剪它? INSERT INTO #temp SELECT LTRIM(RTRIM(field1)), LTRIM(RTRIM(field2))...

标签: sql trim temp-tables


【解决方案1】:

如果您知道需要修剪哪些列,您可以将它们作为选择的一部分修剪到临时表中,如

SELECT 
ID,
RTRIM(myCharColumn1) as myColumn1,
RTRIM(myCharColumn2) as myColumn2,
RTRIM(myCharColumn3) as myColumn3
INTO #myTempTable
WHERE.....

【讨论】:

    【解决方案2】:

    您的问题是您必须使用 SELECT 语句构建列名列表,以便它遍历所有列。

    我认为这可能有效:

    DECLARE @Op NVARCHAR(3000)
    DECLARE @table_name AS VARCHAR(300) 
    
    SET @table_name = (SELECT TOP 1 [name] FROM tempdb..sysobjects WHERE name LIKE '#tempFinalResults%')
    
    SELECT @Op = COALESCE(@Op + ',[', '[') + COLUMN_NAME +
        '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))' 
    FROM 
        tempDB.information_Schema.Columns 
    WHERE 
        DATA_Type IN ('varchar', 'char', 'nchar', 'nvarchar')
    
    SET @Op = 'UPDATE [' + @table_name + '] SET ' + @Op
    
    Exec sp_executesql @Op
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 2021-12-30
      • 2015-03-12
      • 1970-01-01
      相关资源
      最近更新 更多