【问题标题】:Pl/sql: Re-arrange strings in a recordpl/sql:重新排列记录中的字符串
【发布时间】:2022-01-18 06:16:12
【问题描述】:

我在某列中有一条记录如下,

4050 Belmont Ave, Unit-6这条记录必须更新为以下格式:

Unit-6, 4050 Belmont Ave.

可以使用哪些功能来重新排列记录中的字符串?

谢谢 富兰克林

【问题讨论】:

  • 你需要有一些可以应用的规则,然后也许使用正则表达式。

标签: sql oracle


【解决方案1】:

您可以使用简单的字符串函数来查找第一个逗号并交换前后的子字符串:

SELECT value,
       CASE INSTR(value, ', ')
       WHEN 0
       THEN value
       ELSE SUBSTR(value, INSTR(value, ', ') + 2)
            || ', '
            || SUBSTR(value, 1, INSTR(value, ', ') - 1)
       END AS switched_value
FROM   table_name;

或者,您可以使用正则表达式(写起来更短,但执行起来更慢):

SELECT value,
       REGEXP_REPLACE( value, '^(.*?), (.*)$', '\2, \1') AS switched_value
FROM   table_name;

其中,对于样本数据:

CREATE TABLE table_name (value) AS
SELECT '4050 Belmont Ave, Unit-6' FROM DUAL;

两个输出:

VALUE SWITCHED_VALUE
4050 Belmont Ave, Unit-6 Unit-6, 4050 Belmont Ave

db小提琴here

【讨论】:

    猜你喜欢
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2013-02-05
    • 1970-01-01
    相关资源
    最近更新 更多