我希望没有任何限制,因为我今天发布了不止一次。 :-P 现在我在OracleSQL中有一个表。我注意到有一些无用的标志,并希望删除它们。我这样做的方法是更换所有这些。下面是我的表和我的查询。
这是我的问题:
SELECT
CASE WHEN WORD IN ('!', '"', '@','""') Then ''
ELSE WORD END
FROM TERM_FREQUENCY;
它没有给我一个错误,但这些特殊字符也不会消失......有什么想法吗?
答案 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 ...
您可能还希望使用lower
或upper
将所有内容放入相同的案例中,因为您可能并不真正想要以不同的方式计算不同的大小写。