Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете ВСИЧКИ полета, които съдържат само ГЛАВНИ букви

Може да искате да използвате съпоставяне с чувствителност към малки и големи букви . Вярвам, че по подразбиране не е чувствително главни и малки букви. Пример:

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');

След това:

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

Ако не искате да използвате съпоставяне, чувствително към малки и големи букви за цялата таблица, можете също да използвате COLLATE клауза като @kchau, предложена в другия отговор .

Нека опитаме с таблица, използвайки съпоставяне без значение за главни и малки букви:

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');

Това няма да работи много добре:

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

Но можем да използваме COLLATE клауза за съпоставяне на полето за име към съпоставяне, чувствително към малки и големи букви:

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. SQLAlchemy JSON колона - как да изпълните заявка за съдържание

  2. Речник на базата данни на DevOps за начинаещи в MySQL

  3. Мога ли да използвам неагрегирани колони с групиране по?

  4. Как да намерите редове, които имат стойност, която съдържа малка буква

  5. свържете AngularJS към mysql, използвайки моята PHP услуга?