当前位置: 首页 > 面试题库 >

使用SQL逐字反向字符串

穆宏胜
2023-03-14
问题内容

我需要颠倒句子或字符串中的单词位置。

For example : "Hello World! I Love StackOverflow", to be displayed as "StackOverflow Love I World! Hello".

可以用SQL吗?单词长度不大于VARCHAR2(4000)OracleVARCHAR2表列中支持的最大长度。

我只有反向字符串(反向字符)的解决方案


问题答案:

创建一个 功能

REGEXP_SUBSTR('Your text here','[^ ]+', 1,?)将使用空格作为定界符从文本中提取一个单词。Tt在Exception上返回原始的String本身!

CREATE OR REPLACE FUNCTION reverse_words (v_STRING IN VARCHAR2)
RETURN VARCHAR2
IS
   L_TEMP_TEXT  VARCHAR2(4000);
   L_FINAL_TEXT  VARCHAR2(4000);
   V_LOOPCOUNT NUMBER :=0;
   T_WORD VARCHAR2(4000);
BEGIN
      L_TEMP_TEXT := regexp_replace(V_STRING,'[[:space:]]+',' '); -- Replace multiple spaces as single
      LOOP
        v_LOOPCOUNT := v_LOOPCOUNT+1;
        T_WORD      := REGEXP_SUBSTR(L_TEMP_TEXT,'[^ ]+', 1, V_LOOPCOUNT);
        L_final_TEXT := T_WORD||' '||L_final_TEXT;
      EXIT WHEN T_WORD IS NULL;
      END LOOP;
   RETURN(TRIM(L_final_TEXT));
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE(sqlerrm||chr(10)||dbms_utility.format_error_backtrace);
        RETURN V_STRING;
END reverse_words;
/

样本结果:

你可以打电话 reverse_words(yourcolumn) from your_table

SQL> select reverse_words('Hello World! I Love StackOverflow') "Reversed" from dual;

Reversed
--------------------------------------------------------------------------------
StackOverflow Love I World! Hello


 类似资料:
  • 问题内容: 我想知道如何逐字地遍历一个字符串。 上面给出了输出: 但是我正在寻找以下输出: 问题答案: 当你做- 您不是在遍历字符串中的单词,而是在遍历字符串中的字符。要遍历单词,您首先需要使用将字符串拆分成单词,然后遍历该单词。范例- 请注意,,且不传递任何参数,所有空格都将其分割(空格,多个空格,制表符,换行符等)。

  • 问题内容: 我有下表: 我要订购这样的产品ID(从最小到最大): 这是我尝试过的方法,但是不起作用: 我该怎么做呢? 以及如何获得最大的product_id?我试过了,但是没有用: 问题答案: 尝试执行以下查询以按预期顺序获取结果。 小提琴演示

  • 我试图创建一个表示JSON对象数组的字符串文字,所以我想到了使用字符串插值特性,如下面的代码所示: 现在我想使用逐字字符串,这样我就不必使用反斜杠来转义双引号。因此,通过这个答案,我了解到逐字字符串和字符串插值可以一起使用。所以我改变了我的代码如下: 但它无法编译。如果我的用法有任何错误,或者在这种情况下无法使用C#的逐字字符串功能转义双引号,有人能帮我吗?

  • 问题内容: 给定一个不太长的字符串,逐行读取字符串的最佳方法是什么? 我知道你可以做: 另一种方法是在eol上获取子字符串: 还有其他更简单的方法吗?我对上述方法没有任何问题,只是想知道你们中是否有人知道一些看起来更简单,更有效的方法? 问题答案: 您也可以使用String方法: 这使您可以方便地将所有行排列在一起。 我不知道拆分的性能。它使用正则表达式。

  • 问题内容: 我想在打字稿中使用字符串枚举,但在其中看不到对反向映射的支持。我有一个这样的枚举: 我需要这样使用它: 是的,我不知道字符串中有什么,如果字符串未在枚举定义中显示,我需要将其解析为枚举或在运行时解析失败。我该如何做到整洁呢?提前致谢 问题答案: 我们可以将其设为一个类型,并将值设为同一类型。 更严格的版本: 字符串枚举作为此答案:

  • 我在一次采访中被要求在没有任何临时变量或.NET类、字符串方法等帮助的情况下反向相同字符串数组的元素。我被告知要使用像循环这样的基本编程结构。因为,我今天要参加另一个面试,我急急忙忙地想知道这是否真的可能,因为我找不到解决这个问题的办法。