sql update part string和trim trailing value

时间:2012-11-28 15:17:39

标签: sql oracle11g

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

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

2 个答案:

答案 0 :(得分:0)

select substr('xyz@psu.edu',1, instr('xyz@psu.edu','@') - 1) from dual

select substr('ABCabc123',1, instr('ABCabc123','abc') - 1) from dual

答案 1 :(得分: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