我想把一根线修剪到指定的长度。如果绳子短了,我什么也不想做。我找到了一个函数substr()来完成这项工作。但是,在Oracle文档中,如果字符串比最大长度更短,则不会发生什么情况。
例如:
select substr('abc',1,5) from dual;返回'abc',这就是我所需要的。
我想问一下,这是否安全,因为函数似乎没有为这种用法定义。有没有更好的方法来截断?
发布于 2014-06-17 10:57:32
这是一个有趣的问题。令人惊讶的是,文档似乎没有明确地涵盖这一点。
我认为你所做的是相当安全的。当字符串太短时,substr()不会将字符“添加”到字符串的末尾。随着时间的推移,我一直依赖于许多数据库中的这种行为,包括Oracle。在其他数据库和大多数语言中,类似的函数就是这样工作的。
一种例外是当原始数据类型是char()而不是varchar2()类型时。在这种情况下,函数将返回相同类型的字符串,因此可能会填充空格。不过,这是一个类型的属性,实际上不是函数的属性。
发布于 2014-06-17 10:58:00
这是完全可以的,但是如果您想要的话,可以使用以下查询:
select substr('abc',1,least(5,length('abc'))) from dual;发布于 2014-06-17 11:12:11
如果您想完全确定只使用SUBSTR不会导致尾随空白(您不会使用,但有时确实会让人感到安慰),您可以使用:
SELECT RTRIM(SUBSTR('abc',1,5)) FROM DUAL;分享并享受。
https://stackoverflow.com/questions/24261915
复制相似问题