Sql查询OR函数来反转阿拉伯字符串

时间:2015-09-29 20:35:28

标签: sql oracle

我需要sql查询,它将反转阿拉伯字符串。

例如:

  1. 字符串1:ABC DEF(假设ABC DEF为阿拉伯字符串)然后输出应该是CBA FED。
  2. 字符串2:ABCDEF(假设ABCDEF为阿拉伯字符串)然后输出应为FEDCBA。
  3. 由于 Rajeev Naik

1 个答案:

答案 0 :(得分:3)

这是一个3步骤的过程

  1. 使用空格作为分隔符将字符串拆分为行
  2. 反转每个字符串
  3. 将字符串重新加入
  4. <强> Sql Fiddle Demo

    WITH spaceSplit as (
        SELECT 
            t.id,
            trim(regexp_substr(t.text, '[^ ]+', 1, lines.column_value)) text, 
            lines.column_value as seq
        FROM t,
          TABLE (CAST (MULTISET
          (SELECT LEVEL FROM dual
                  CONNECT BY LEVEL <= regexp_count(t.text, ' ')+1
          ) AS sys.odciNumberList ) ) lines
        ORDER BY id, lines.column_value
    ),
    reverseString as (
        SELECT ID, REVERSE(text) as text, seq
        FROM spaceSplit
    )
    SELECT id, LISTAGG(text, ' ') WITHIN GROUP (ORDER BY seq) AS text
    FROM   reverseString
    GROUP BY id
    ;
    

    <强>输出

    | ID |     TEXT |
    |----|----------|
    |  1 |  CBA FED |
    |  2 |   FEDCBA |
    |  3 | BA DC FE |