删除字段内容中的尾随空格
问题描述:
我正在使用SQL Server MSDE 2000.我有一个名为notes
的字段为nvarchar(65)的字段。删除字段内容中的尾随空格
在所有记录中的内容(清晰引用)之后,内容为“某物”,并带有额外的空间。我使用了下面的命令。
UPDATE TABLE1
SET notes = RTRIM(LTRIM(notes))
但它不起作用。有没有其他方法可以做到这一点?
答
确定该查询无法正常工作?尝试:
SELECT TOP 100 '~'+ t.notes +'~'
FROM TABLE1 t
TOP 100
将结果限制为前100行,足以让一个想法,如果有真正的输出空间。如果有,并且RTRIM/LTRIM不删除它 - 那么你没有处理空白字符。在这种情况下,尝试:
UPDATE TABLE1
SET notes = REPLACE(notes,
SUBSTRING(notes, PATINDEX('%[^a-zA-Z0-9 '''''']%', notes), 1),
'')
WHERE PATINDEX('%[^a-zA-Z0-9 '''''']%', notes) <> 0
答
... OR你可以从字面上只是复制/粘贴在一个字段的末尾空白'(空间)作为查询的结果到您的REPLACE语句和从那里更新一切。
update TABLE1
set notes = replace(notes, ' ', '')
答
而且万一你需要修剪所有空格中的所有列,你可以使用这个脚本来动态地做到这一点:
--Just change table name
declare @MyTable varchar(100)
set @MyTable = 'MyTable'
--temp table to get column names and a row id
select column_name, ROW_NUMBER() OVER(ORDER BY column_name) as id into #tempcols from INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE IN ('varchar', 'nvarchar') and TABLE_NAME = @MyTable
declare @tri int
select @tri = count(*) from #tempcols
declare @i int
select @i = 0
declare @trimmer nvarchar(max)
declare @comma varchar(1)
set @comma = ', '
--Build Update query
select @trimmer = 'UPDATE [dbo].[' + @MyTable + '] SET '
WHILE @i <= @tri
BEGIN
IF (@i = @tri)
BEGIN
set @comma = ''
END
SELECT @trimmer = @trimmer + CHAR(10)+ '[' + COLUMN_NAME + '] = LTRIM(RTRIM([' + COLUMN_NAME + ']))'[email protected]
FROM #tempcols
where id = @i
select @i = @i+1
END
--execute the entire query
EXEC sp_executesql @trimmer
drop table #tempcols
什么叫“不工作”是什么意思?它应该...... – 2009-12-08 05:43:12
不确定。查询得到正确执行,我得到'(受影响的12539行)'消息''。但该领域仍然具有尾随空间的价值。 – bdhar 2009-12-08 05:44:58
你看着正确的服务器实例,表?我之前做过... – 2009-12-08 05:46:35