在SQL中清除表数据

时间:2014-04-06 02:20:38

标签: oracle replace

我希望没有任何限制,因为我今天发布了不止一次。 :-P 现在我在OracleSQL中有一个表。我注意到有一些无用的标志,并希望删除它们。我这样做的方法是更换所有这些。下面是我的表和我的查询。 enter image description here

这是我的问题:

SELECT
  CASE WHEN WORD IN ('!', '"', '@','""') Then ''
  ELSE WORD END 
FROM TERM_FREQUENCY;   

它没有给我一个错误,但这些特殊字符也不会消失......有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你的一点点错误:你使用 - 而不是_

SELECT
  CASE WHEN WORD IN ('!', '"', '@','""') Then ''
  ELSE WORD END 
-- FROM TERM-FREQUENCY;   --This is where the problem is.
FROM TERM_FREQUENCY;      -- Because your table is named TERM _ FREQUENCY 

答案 1 :(得分:0)

您最初使用'replace'标记了您的问题,但之后未在您的代码中使用该功能。您将每个整个word与那些固定字符串进行比较,而不是查看它是否包含任何字符串。

您可以使用嵌套的replace调用一次删除一个字符:

select replace(replace(word, '!', null), '"', null) from ...

...这将是乏味的,并依靠你识别你不想要的每个角色;或者你可以使用正则表达式只保留字母字符,我怀疑你是真正的字符:

select regexp_replace(word, '[^[:alpha:]]', null) from ...

Quick demo

您可能还希望使用lowerupper将所有内容放入相同的案例中,因为您可能并不真正想要以不同的方式计算不同的大小写。