【问题标题】:sql update part string and trim trailing valuesql更新部分字符串并修剪尾随值
【发布时间】:2012-11-28 15:17:38
【问题描述】:

我正在尝试更新一个字符串,但我还需要清除找到的字符串后面的其余值。我不能使用替换,因为最后的值会改变,但中间部分对于许多记录将保持不变。如果您不知道字符串中的确切值或位置,我还没有看到删除字符串尾随部分的帖子。
我正在通过 SQL Developer 使用 Oracle 作为我的数据库来更新数据。

"keep this data" "search on keyword" "wipe out trailing data"     "result data"
xyz                 @                     psu.edu                 xyz

列数据值 = xyz@psu.edu

我会搜索列名类似于 '@%' 的记录

去掉“@%”

最终结果值 = xyz

列数据值 = ABCabc123

我会搜索列名类似于 'abc%' 的记录

去掉“abc%”

最终结果值 = ABC

我没有看到此类更新的任何答案。请帮忙!

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:
    select substr('xyz@psu.edu',1, instr('xyz@psu.edu','@') - 1) from dual
    
    select substr('ABCabc123',1, instr('ABCabc123','abc') - 1) from dual
    

    【讨论】:

      【解决方案2】:

      您可能需要检查以防找不到所需的字符串:

      SELECT CASE
                WHEN INSTR('xyz@psu.edu','@', 1, 1) > 0
                   THEN SUBSTR('xyz@psu.edu',1,INSTR('xyz@psu.edu','@', 1, 1)-1)
                   ELSE 'xyz@psu.edu'
                END as "Result Data"
      FROM DUAL
      

      【讨论】:

      • 谢谢。如何针对表中的列运行此类查询以更新数千条记录?
      • 只需将答案中的常量更改为表格的列名(当然还要命名您的表格,而不是使用DUAL)。
      猜你喜欢
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      相关资源
      最近更新 更多