[英]Trim All columns in a temp table and Select data
得到一个简短的问题。
我首先选择一个数据集放入临时表 。
临时表的列中包含的数据中包含额外的空格。 存在许多带有多余空格的列。 因此,我用谷歌搜索了如何删除列中的所有空格。
找到了此解决方案SQL Server:如何在表的所有varchar列上执行Rtrim
但是,我尝试为临时表实现相同的功能,但是由于临时表是在不同的架构中创建的,因此它无法按原样工作。
因此,我修改了相同的内容并进行了尝试。 但没有运气。 有人可以指出我做错了什么吗?
代码如下:
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
ID,
RTRIM(myCharColumn1) as myColumn1,
RTRIM(myCharColumn2) as myColumn2,
RTRIM(myCharColumn3) as myColumn3
INTO #myTempTable
WHERE.....
您的问题是您必须使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.