当我知道要修剪的长度而不是它可能包含的长度时,如何使用RTRIM或REPLACE?

时间:2012-05-22 20:00:27

标签: sql oracle

我需要在Oracle查询中对结果集中的最后7个字符进行RTRIM。这7个字符可以是任何东西;空格,字母数字等...而且我不知道任何值的确切长度。

所以例如我想运行这样的东西

 SELECT RTRIM (COl_A, (SELECT LENGTH (COL_A)-7) FROM TABLE_ONE;

或替换等效

SELECT REPLACE(COL_A, (SELECT LENGTH (COL_A)-7 FROM TABLE_ONE),'');

我是否需要对SUBSTRING做些什么?

我知道如何删除/替换特定的字符,但在处理未知字符时我遇到了麻烦。我已经看到了一些类似问题的例子,但它们似乎不必要地复杂......或者这需要比我想象的更深入的解决方案吗?

一如既往地感谢您的建议或提示。

2 个答案:

答案 0 :(得分:7)

您正在搜索substr功能。

select substr(col_a, 1, length(col_a) - 7) from table_one

答案 1 :(得分:1)

实际上,正确的解决方案是:

select substr(col_a, 1, (case when length(col_a) < 7 then 0 else length(col_a) - 7 end) from table_one

一般而言,您可能需要考虑长度小于7时会发生什么。