首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用substr在Oracle上修剪字符串

问使用substr在Oracle上修剪字符串
EN

Stack Overflow用户
提问于 2014-06-17 10:50:49
回答 4查看 55.6K关注 0票数 13

我想把一根线修剪到指定的长度。如果绳子短了,我什么也不想做。我找到了一个函数substr()来完成这项工作。但是,在Oracle文档中,如果字符串比最大长度更短,则不会发生什么情况。

例如:

代码语言:javascript
复制
select substr('abc',1,5) from dual;

返回'abc',这就是我所需要的。

我想问一下,这是否安全,因为函数似乎没有为这种用法定义。有没有更好的方法来截断?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-06-17 10:57:32

这是一个有趣的问题。令人惊讶的是,文档似乎没有明确地涵盖这一点。

我认为你所做的是相当安全的。当字符串太短时,substr()不会将字符“添加”到字符串的末尾。随着时间的推移,我一直依赖于许多数据库中的这种行为,包括Oracle。在其他数据库和大多数语言中,类似的函数就是这样工作的。

一种例外是当原始数据类型是char()而不是varchar2()类型时。在这种情况下,函数将返回相同类型的字符串,因此可能会填充空格。不过,这是一个类型的属性,实际上不是函数的属性。

票数 8
EN

Stack Overflow用户

发布于 2014-06-17 10:58:00

这是完全可以的,但是如果您想要的话,可以使用以下查询:

代码语言:javascript
复制
select substr('abc',1,least(5,length('abc'))) from dual;
票数 16
EN

Stack Overflow用户

发布于 2014-06-17 11:12:11

如果您想完全确定只使用SUBSTR不会导致尾随空白(您不会使用,但有时确实会让人感到安慰),您可以使用:

代码语言:javascript
复制
SELECT RTRIM(SUBSTR('abc',1,5)) FROM DUAL;

分享并享受。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24261915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档