2010-08-09 26 views
51

Tôi đang tìm cách thay thế các giá trị trong một cột cụ thể. Ví dụ cột sau đây đánh giá caoLàm cách nào để thay thế các giá trị cụ thể trong cột cơ sở dữ liệu oracle?

column name 
---------- 
Test1 
Test2 
Test3 
Test12 

nên được (thay thế est1 với rest1)

column name 
---------- 
Trest1 
Test2 
Test3 
Trest12 
+0

tôi nhìn vào kết quả tìm kiếm và những người phát hiện ra rằng sử dụng thay thế để có được giá trị từ một bảng kép. Tôi đang tìm cách cập nhật bảng như trái ngược với nhận giá trị. – schar

Trả lời

136

Sử dụng REPLACE:

SELECT REPLACE(t.column, 'est1', 'rest1') 
    FROM MY_TABLE t 

Nếu bạn muốn cập nhật các giá trị trong bảng, sử dụng :

UPDATE MY_TABLE t 
    SET column = REPLACE(t.column, 'est1', 'rest1') 
+13

Trong Oracle này nên được UPDATE t, không UPDATE TABLE t. –

+1

@Tom Có lẽ 'TABLE' được sử dụng ở đây là tên bảng hư cấu (và 't' là bí danh). Câu lệnh chọn cũng nhận được các giá trị từ một bảng hư cấu có tên tương tự. – nbrooks

16

Nếu bạn cần cập nhật các giá trị trong một bảng cụ thể:

UPDATE TABLE-NAME SET COLUMN-NAME = REPLACE(TABLE-NAME.COLUMN-NAME, 'STRING-TO-REPLACE', 'REPLACEMENT-STRING'); 

nơi

TABLE-NAME   - The name of the table being updated 
    COLUMN-NAME  - The name of the column being updated 
    STRING-TO-REPLACE - The value to replace 
    REPLACEMENT-STRING - The replacement 
-2

Tôi đang sử dụng phiên bản 4.0.2.15 với Build 15.21

Đối với tôi rằng tôi cần này :

UPDATE table_name SET column_name = REPLACE(column_name,"search str","replace str"); 

Đặt t.column_name trong fi đối số đầu tiên của replace không hoạt động.

-1

Trong Oracle, có khái niệm về tên lược đồ, vì vậy hãy thử sử dụng này

update schemname.tablename t 
set t.columnname = replace(t.columnname, t.oldvalue, t.newvalue); 
Các vấn đề liên quan