sql >> Database teknologi >  >> RDS >> Mysql

Vælg ALLE felter, der kun indeholder STORE bogstaver

Det kan være en god ide at bruge en sammenstilling , der skelner mellem store og små bogstaver. . Jeg tror, ​​at standarden ikke skelner mellem store og små bogstaver. Eksempel:

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

Så:

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

Hvis du ikke ønsker at bruge en store og små bogstaver for hele tabellen, kan du også bruge COLLATE klausul som @kchau foreslået i det andet svar .

Lad os prøve med en tabel, der bruger en sortering, der ikke skiller mellem store og små bogstaver:

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

Dette vil ikke fungere særlig godt:

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

Men vi kan bruge COLLATE klausul for at sammensætte navnefeltet til en store og små bogstaver:

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. Dybde i MYSQL og lukkebordtræer

  2. mysql LOAD DATA INFIL med auto-increment primær nøgle

  3. Hvad er standardrækkefølgen for en liste, der returneres fra et Django-filteropkald?

  4. PostgreSQL matematiske funktioner