Cập nhật tất cả các giá trị của một cột thành chữ thường


100

Hãy nói rằng tôi có một cái gì đó như thế này

uid    tag
1      HeLLo
2      heLLO
3      HELLO
4      hello

Làm cách nào để cập nhật tất cả các giá trị trong cột "thẻ" thành:

uid    tag
1      hello 
2      hello 
3      hello 
4      hello 

sử dụng MySQL?

Câu trả lời:


243

3
Lưu ý, điều này không hoạt động đúng khi cơ sở dữ liệu của bạn sử dụng đối sánh không phân biệt chữ hoa chữ thường.
Ngọc lục bảoD.

Điều này sẽ hoạt động như thế nào với các địa chỉ email? Name@domain.com @ sẽ thay đổi chứ?
Björn C

2
UPDATE table_name SET tag = BINARY LOWER(tag)đối với đối sánh không phân biệt chữ hoa chữ thường.
Enyby

2
@ BjörnC - chữ trên / dưới chỉ thay đổi các chữ cái; tất cả các ký tự khác không thay đổi.
ToolmakerSteve

@Rippo tôi nhận được lỗi này khi tôi cố gắng truy vấn nàyHINT: No function matches the given name and argument types. You might need to add explicit type casts.
Luna Lovegood

68

THẤP HƠN()

update table set tag = LOWER(tag)

Tôi gặp lỗi này khi thử truy vấn này GỢI Ý: Không có hàm nào phù hợp với các loại đối số và tên đã cho. Bạn có thể cần thêm các phôi kiểu rõ ràng.
Luna Lovegood.

4

Phiên bản dành cho đối sánh không phân biệt chữ hoa chữ thường và bao gồm mệnh đề "WHERE" nếu bạn không muốn cập nhật toàn bộ cột:

UPDATE table 
SET tag = LOWER(tag)
WHERE LOWER(tag) != tag
COLLATE Latin1_General_CS_AS

Dòng COLLATE sẽ làm cho nó hoạt động nếu cơ sở dữ liệu của bạn sử dụng đối sánh không phân biệt chữ hoa chữ thường, như của tôi.


Tôi gặp lỗi này khi thử truy vấn này GỢI Ý: Không có hàm nào phù hợp với các loại đối số và tên đã cho. Bạn có thể cần thêm các phôi kiểu rõ ràng.
Luna Lovegood.

3

Thử cái này:

update `table` set `column_name` = LOWER(column_name without quotation)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.