Sql 当我知道要修剪的长度但不知道它可能包含的内容时,如何使用RTRIM或替换?

Sql 当我知道要修剪的长度但不知道它可能包含的内容时,如何使用RTRIM或替换?,sql,oracle,Sql,Oracle,我需要在Oracle查询中RTRIM结果集中的最后7个字符。这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),''); 我是否需要对子字符串做些什么 我知道如何删除/替换特定字

我需要在Oracle查询中RTRIM结果集中的最后7个字符。这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),'');
我是否需要对子字符串做些什么

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


一如既往,提前感谢您的建议或提示

您正在搜索
substr
函数

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

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

select substr(col_a, 1, (case when length(col_a) < 7 then 0 else length(col_a) - 7 end) from table_one
从表1中选择substr(col_a,1)(长度(col_a)<7的情况下,然后选择0其他长度(col_a)-7结束)

一般来说,您需要考虑长度小于7时的情况。

查看
length
函数。您需要类似
SUBSTR(columnname,0,length(columname)-7)的内容
我想知道你怎么写“我是否需要对子字符串做些什么?”而自己却找不到答案。如上所述,我看到了一些示例,但对我来说似乎不够清楚。我尝试将RTRIM和长度关键字组合在一起,但尝试将长度与替换组合在一起失败。我总是发现解决方案提供了h这里的内容简洁明了,感谢大家抽出时间回答我的问题。我非常感谢大家的回答,每次来到这里都能学到一些东西。不需要。如果是,传递给长度参数的值将为负值,导致substr函数返回
null
(与空字符串相同,
'
)NULL与空字符串不一样!用大写字母键入它并不能使其为真。它只会使您变得不礼貌。在Oracle中,空字符串等于NULL。只需尝试以下操作:
从dual
中选择“”,好的,然后查看ANSI标准SQL规范。我鼓励您使用谷歌搜索“ANSI SQL空字符串NULL”。标准很清楚,表达式“''为NULL”的计算结果为FALSE.Fine。谷歌说,标准说..但我们这里说的是Oracle。忘记你所知道的关于标准的一切。:)