Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chọn TẤT CẢ các trường chỉ chứa các chữ cái UPPERCASE

Bạn có thể muốn sử dụng đối chiếu phân biệt chữ hoa chữ thường . Tôi tin rằng mặc định là không phân biệt chữ hoa chữ thường. Ví dụ:

CREATE TABLE my_table (
   id int,
   name varchar(50)
) CHARACTER SET latin1 COLLATE latin1_general_cs;

INSERT INTO my_table VALUES (1, 'SomeThing');
INSERT INTO my_table VALUES (2, 'something');
INSERT INTO my_table VALUES (3, 'SOMETHING');
INSERT INTO my_table VALUES (4, 'SOME4THING');

Sau đó:

SELECT * FROM my_table WHERE name REGEXP '^[A-Z]+$';
+------+-----------+
| id   | name      |
+------+-----------+
|    3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)

Nếu bạn không muốn sử dụng đối chiếu phân biệt chữ hoa chữ thường cho toàn bộ bảng, bạn cũng có thể sử dụng COLLATE mệnh đề như @kchau được đề xuất trong câu trả lời khác .

Hãy thử với một bảng sử dụng đối chiếu không phân biệt chữ hoa chữ thường:

CREATE TABLE my_table (
   id int,
   name varchar(50)
) CHARACTER SET latin1 COLLATE latin1_general_ci;

INSERT INTO my_table VALUES (1, 'SomeThing');
INSERT INTO my_table VALUES (2, 'something');
INSERT INTO my_table VALUES (3, 'SOMETHING');
INSERT INTO my_table VALUES (4, 'SOME4THING');

Điều này sẽ không hoạt động tốt:

SELECT * FROM my_table WHERE name REGEXP '^[A-Z]+$';
+------+-----------+
| id   | name      |
+------+-----------+
|    1 | SomeThing |
|    2 | something |
|    3 | SOMETHING |
+------+-----------+
3 rows in set (0.00 sec)

Nhưng chúng ta có thể sử dụng COLLATE mệnh đề đối chiếu trường tên với đối chiếu phân biệt chữ hoa chữ thường:

SELECT * FROM my_table WHERE (name COLLATE latin1_general_cs) REGEXP '^[A-Z]+$';
+------+-----------+
| id   | name      |
+------+-----------+
|    3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi cú pháp Sql khi sử dụng truy vấn cơ sở dữ liệu UPDATE

  2. MySQL - Hàng đến cột

  3. Tại sao kết quả từ một truy vấn SQL không trở lại theo thứ tự tôi mong đợi?

  4. Trả về kết quả truy vấn theo thứ tự xác định trước

  5. Có thể sửa đổi các mục nhập bảng từ LibreOffice Base không?