SQL REPLACE无法按预期工作

时间:2017-06-16 18:31:11

标签: sql sql-server tsql

我有一个临时表,我试图消除特定列中的所有空格。但是,我的替换根本不起作用。这是我的代码

IF OBJECT_ID('tempdb..#attempt1temptable') IS NOT NULL 
BEGIN
    DROP TABLE #attempt1temptable
END
GO 

CREATE TABLE #attempt1temptable
(
   temp_description            varchar(MAX),
   temp_definition             varchar(MAX)
)

INSERT INTO #attempt1temptable
 SELECT  graphic_description, graphic_definition
 FROM graphic

UPDATE #attempt1temptable SET  temp_description=REPLACE(temp_description, ' ', '')
UPDATE #attempt1temptable SET  temp_description=REPLACE(temp_description,  char(160), '')

--I have no idea why it won't update correctly here

select temp_description, LEN(temp_description) from #attempt1temptable

插入并选择按预期工作但是它没有更新temp_description没有空格。查询的结果给了我temp_description而没有任何改变。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试替换其他一些空格字符:

select replace(replace(replace(replace(
   description
  ,char(9)/*tab*/,'')
  ,char(10)/*newline*/,'')
  ,char(13)/*carriage return*/,'')
  ,char(32)/*space*/,'')
from #attemp1temptable

答案 1 :(得分:0)

您可能正在处理除space之外的其他字符。例如,您可以处理tab 我建议复制并粘贴字符以从实际数据中删除到替换语句中,以确保您拥有正确的字符。

编辑:

此外,您似乎使用LEN来验证数据是否已更新。但请注意,LEN并不会将尾随空格计为字符。因此,即使数据已更新,计数也不会改变