Toán tử so sánh (bao gồm <
và >
) "hoạt động" với các giá trị chuỗi cũng như số.
Đối với MySQL
Theo mặc định, so sánh chuỗi không phân biệt chữ hoa chữ thường và sử dụng bộ ký tự hiện tại. Giá trị mặc định là
latin1
(cp1252 Tây Âu), cũng hoạt động tốt cho tiếng Anh.
So sánh chuỗi sẽ phân biệt chữ hoa chữ thường khi đối chiếu tập ký tự của các chuỗi được so sánh có phân biệt chữ hoa chữ thường, tức là tên của tập ký tự kết thúc bằng _cs
thay vì _ci
. Thực sự không có ích gì khi lặp lại tất cả thông tin có sẵn trong Hướng dẫn tham khảo MySQL tại đây.
Tham chiếu toán tử so sánh MySQL:
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html
Thông tin thêm về bộ ký tự / đối chiếu MySQL:
http://dev.mysql.com/doc/refman/5.5/en/charset.html
Để trả lời các câu hỏi cụ thể bạn đã hỏi:
Hỏi: Đây có phải là một cách khả thi để so sánh các chuỗi trong SQL không?
Đ: Có, trong cả MySQL và SQL Server
Hỏi: và nó hoạt động như thế nào?
Đ: Toán tử so sánh trả về một boolean, TRUE, FALSE hoặc NULL.
Hỏi: một chuỗi nhỏ hơn chuỗi khác đứng trước theo thứ tự từ điển? Ví dụ, quả bóng nhỏ hơn nước?
Đ: Có, bởi vì 'b' đứng trước 'w' trong đối chiếu tập hợp đặc tính, biểu thức
'ball' < 'water'
sẽ trả về TRUE. (Điều này phụ thuộc vào bộ ký tự và trên đối chiếu .
Hỏi: và so sánh này có phân biệt chữ hoa chữ thường không?
Đ: Việc so sánh cụ thể có phân biệt chữ hoa chữ thường hay không phụ thuộc vào máy chủ cơ sở dữ liệu; theo mặc định, cả SQL Server và MySQL đều không phân biệt chữ hoa chữ thường.
Trong MySQL, có thể thực hiện so sánh chuỗi bằng cách chỉ định đối chiếu tập ký tự phân biệt chữ hoa chữ thường (tên tập ký tự sẽ kết thúc bằng _cs thay vì _ci)
Hỏi: Ví dụ BALL
Đ: Theo mặc định, trong cả SQL Server và MySQL, biểu thức
sẽ trả về TRUE. 'BALL' < 'water'