gpt4 book ai didi

oracle - 如何在不使用 REVERSE() 函数的情况下反转 Oracle (11g) SQL 中的字符串

转载 作者:行者123 更新时间:2023-12-01 10:35:54 33 4
gpt4 key购买 nike

我想在不使用 REVERSE 函数的情况下反转字符串。我遇到了一个类似这样的例子:

select listagg(letter) within group(order by lvl)
from
(SELECT LEVEL lvl, SUBSTR ('hello', LEVEL*-1, 1) letter
FROM dual
CONNECT BY LEVEL <= length('hello'));

除了这种方法,还有其他更好的方法吗?

最佳答案

如果您试图避免未记录的 reverse() 函数,您可以使用 utl_raw.reverse() function相反,从 RAW 进行适当的转换:

select utl_i18n.raw_to_char(
utl_raw.reverse(
utl_i18n.string_to_raw('Some string', 'AL32UTF8')), 'AL32UTF8')
from dual;

UTL_I18N.RAW_TO_CHAR(UTL_RAW.REVERSE(UTL_I18N.STRING_TO_RAW('SOMESTRING','AL32UT
--------------------------------------------------------------------------------
gnirts emoS

所以这是取一个原始值;在上面做 utl_i18n.string_to_raw();然后将其传递给 utl_raw.reverse();然后通过 utl_i18n.raw_to_char() 将结果传回。

不完全确定这将如何处理多字节字符,或者无论如何你希望发生什么...

the discussion @RahulTripathi linked to 的变体,没有字符集处理:

select utl_raw.cast_to_varchar2(utl_raw.reverse(utl_raw.cast_to_raw('Some string')))
from dual;

UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.REVERSE(UTL_RAW.CAST_TO_RAW('SOMESTRING')))
--------------------------------------------------------------------------------
gnirts emoS

但该线程还指出它仅适用于单字节字符。

关于oracle - 如何在不使用 REVERSE() 函数的情况下反转 Oracle (11g) SQL 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35314500/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com