2013-02-04 37 views
18

Tôi thực sự không biết chính xác phải làm gì, tôi hơi mới với SQL ... tôi nên sử dụng chuỗi con hoặc thay thế trong trường hợp của mìnhLàm thế nào để thay thế giá trị trường sql

Tôi có trong DB của mình gọi là email, bây giờ tôi muốn chỉnh sửa tất cả email kết thúc bằng email.com đến email.org. Tôi nên làm gì?

Trả lời

30

Tùy thuộc vào những gì bạn cần làm. Bạn có thể sử dụng replace kể từ khi bạn muốn thay thế các giá trị:

select replace(email, '.com', '.org') 
from yourtable 

Sau đó, để UPDATE bảng của bạn với sự kết thúc mới, sau đó bạn sẽ sử dụng:

update yourtable 
set email = replace(email, '.com', '.org') 

Bạn cũng có thể mở rộng về vấn đề này bằng cách kiểm tra 4 ký tự cuối cùng của giá trị email:

update yourtable 
set email = replace(email, '.com', '.org') 
where right(email, 4) = '.com' 

Tuy nhiên, vấn đề với replace().com có thể sẽ ở Loca khác tions trong email không chỉ là cuối cùng. Vì vậy, bạn có thể muốn sử dụng substring() theo cách sau:

update yourtable 
set email = substring(email, 1, len(email) -4)+'.org' 
where right(email, 4) = '.com'; 

Xem SQL Fiddle with Demo

Sử dụng substring() sẽ trở lại với sự khởi đầu của giá trị email, mà không có thức .com và sau đó bạn nối các .org đến cùng. Điều này ngăn sự thay thế của .com ở nơi khác trong chuỗi.

Hoặc bạn có thể sử dụng stuff(), cho phép bạn thực hiện cả hai xóa và chèn cùng một lúc:

update yourtable 
set email = stuff(email, len(email) - 3, 4, '.org') 
where right(email, 4) = '.com'; 

này sẽ xóa 4 ký tự ở vị trí của nhân vật thứ ba trước khi người cuối cùng (đó là vị trí bắt đầu của số .com cuối cùng) và chèn .org thay thế.

Xem SQL Fiddle with Demo cho phương pháp này.

+0

Cảm ơn bạn rất nhiều, nó làm việc tốt. Được đánh giá cao – user2039512

+1

@ user2039512 Bạn được chào đón, tôi rất sẵn lòng trợ giúp. Nếu một trong những câu trả lời cho câu hỏi của bạn là hữu ích, thì hãy chắc chắn chấp nhận nó thông qua dấu kiểm ở bên trái của nó. Nó sẽ giúp khách truy cập trong tương lai đến trang web và bạn sẽ nhận được đại diện trang web để chấp nhận. :) – Taryn

3

Bạn chỉ có thể sử dụng REPLACE:

UPDATE myTable SET emailCol = REPLACE(emailCol, '.com', '.org')`. 

Nhưng đưa vào tài khoản địa chỉ email như [email protected] sẽ được cập nhật để [email protected].

Nếu bạn muốn ở bên an toàn hơn, bạn nên kiểm tra 4 ký tự cuối cùng bằng cách sử dụng RIGHT và thêm .org vào SUBSTRING theo cách thủ công thay thế. Lưu ý việc sử dụng UPPER để thực hiện tìm kiếm cho trường hợp kết thúc không phân biệt chữ hoa chữ thường .com.

UPDATE myTable 
SET emailCol = SUBSTRING(emailCol, 1, LEN(emailCol)-4) + '.org' 
WHERE UPPER(RIGHT(emailCol,4)) = '.COM'; 

Xem hoạt động trong số SQLFiddle này.

-2

Hãy thử truy vấn này nó sẽ thay đổi các bản ghi kết thúc bằng.com

UPDATE tablename SET email = replace(email, '.com', '.org') WHERE email LIKE '%.com'; 
+2

-1: Điều này sẽ thay thế ở mọi nơi trong địa chỉ email. Nó sẽ tăng gấp đôi thất bại với 'john.comrad @ some.company.com' –

0

Để tránh tên bản cập nhật có chứa .com như [email protected]-[email protected], bạn có thể làm điều này:

UPDATE Yourtable 
SET Email = LEFT(@Email, LEN(@Email) - 4) + REPLACE(RIGHT(@Email, 4), '.com', '.org') 
Các vấn đề liên quan