2012-11-28 84 views
2

我想更新一個字符串,但我也需要清除所找到的字符串後面的其餘值。我不能使用替換,因爲最後的值會改變,但中間部分對於許多記錄將保持不變。如果您不知道它是字符串中的確切值或位置,我還沒有看到過刪除字符串尾部的帖子。
我使用Oracle作爲我的數據庫,通過SQL Developer更新數據。sql更新部分字符串和修剪結尾值

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

列數據值= [email protected]

我將搜索與像 '@%'

刪除 「@%」

最終結果值COLUMNNAME的記錄= xyz

列數據值= ABCabc123

我會搜索與像 'ABC%'

刪除 「ABC%」

最終結果值COLUMNNAME紀錄= ABC

我還沒有看到這種類型的更新的任何答案。請幫忙!

回答

0

您可能需要的情況下,檢查你想要的字符串沒有找到:

SELECT CASE 
      WHEN INSTR('[email protected]','@', 1, 1) > 0 
      THEN SUBSTR('[email protected]',1,INSTR('[email protected]','@', 1, 1)-1) 
      ELSE '[email protected]' 
      END as "Result Data" 
FROM DUAL 
+0

謝謝。如何對錶中的列進行這種查詢以更新數千條記錄? – user1859950

+0

只需更改表格列名稱的答案中的常量(並將當然名稱命名爲表格,而不是使用'DUAL')。 – BellevueBob

+0

正是我所需要的。它工作完美。謝謝! – user1859950