【问题标题】:PL/SQL split string, get last value?PL/SQL 拆分字符串,获取最后一个值?
【发布时间】:2013-07-18 16:40:38
【问题描述】:

如果模式看起来像这样,如何在 PL/SQL 中拆分字符串以获得最后一个值? :

'1;2',在这种情况下,我想要的值是 2。

注意:分隔符是字符';'并且值的长度不同,例如 '1;2 or 123;45678 etc...'

提前致谢!

【问题讨论】:

  • 您需要在存储过程中还是在普通 SQL 中? (PL/SQL 用于存储过程)

标签: oracle plsql


【解决方案1】:
SELECT SUBSTR( column_name, 
               INSTR( column_name, ';', -1 ) + 1 )
  FROM table_name

应该可以。这是SQL Fiddle example

【讨论】:

  • 干得好!完美运行
【解决方案2】:
regexp_substr(your_string, '[^;]*$')

【讨论】:

    【解决方案3】:

    你应该先找到 ; 的位置使用,

    instr(string,';',1,1)
    

    然后使用SUBSTR函数从比上一个函数中找到的值大一开始提取值。

    select substr(string,instr(string,';',1,1) + 1) from table;
    

    【讨论】:

    • 感谢您的回复。你能解释一下'FROM TABLE'部分吗?另外,如何将值存储在变量中?
    • 我假设字符串存储在一个表中。如果您从表中选择,请写下适当的表名。
    【解决方案4】:

    在您的情况下,您可以使用带有 -1 起始位置和 Substr 的 instr。

    pos := instr( searchIn, ';', -1, 1)
    res := substr(searchIn, pos + 1)
    

    这应该可以,如果不行……那就必须这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 2021-01-06
      相关资源
      最近更新 更多