【问题标题】:Oracle SQL possible to trim characters before a character is found?Oracle SQL 可以在找到字符之前修剪字符吗?
【发布时间】:2012-04-29 11:39:00
【问题描述】:

不确定是否可以在 select 语句中使用 trim:

基本上想在找到字符之前修剪字符串中的任何字符:

假设有值(名称)Oliver、Dave 和我想在找到 'v' 之前修剪所有字符,以便之后这些值将是 'ver' 和 've'

再一次,对于 trim 语句来说,这听起来太复杂了,除非有一种简单的方法可以将它与 LIKE 组合来搜索这样的东西。

在这里可能会超越自己,但如果有人可以帮助启发它,那将是一件有用的事情:)

【问题讨论】:

    标签: sql oracle select trim


    【解决方案1】:

    您可以使用 REGEXP 或 SUBSTR/INSTR:

    SELECT CASE WHEN INSTR(mycolumn,'v') > 0
                THEN SUBSTR(mycolumn,INSTR(mycolumn,'v'))
                ELSE mycolumn
           END
    FROM ....
    

    【讨论】:

      【解决方案2】:

      可能是这样的

      SELECT REGEXP_SUBSTR('David', 'v.*') from dual
       WHERE REGEXP_LIKE('David', 'v.*')
      

      关于REGEXP_SUBSTR的说明:http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions131.htm

      REGEXP_LIKE:http://docs.oracle.com/cd/B14117_01/server.101/b10759/conditions018.htm

      【讨论】:

      • 似乎奏效了,你能解释一下 regexp 与常规 substr 相比如何工作吗?
      猜你喜欢
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2020-10-26
      相关资源
      最近更新 更多