2

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

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

4

2 回答 2

0

如果找不到所需的字符串,您可能需要检查:

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
于 2012-11-28T15:55:07.563 回答
0
select substr('xyz@psu.edu',1, instr('xyz@psu.edu','@') - 1) from dual

select substr('ABCabc123',1, instr('ABCabc123','abc') - 1) from dual
于 2012-11-28T15:35:32.920 回答