mysql - primera - Seleccione TODOS los campos que contengan solo letras MAYÚSCULAS
primera letra de cada palabra en mayuscula sql (7)
¿Cómo seleccionas un campo que contiene solo caracteres en mayúsculas en mysql o un campo que no contiene caracteres en minúsculas?
Básico eg .
SELECT * FROM foo WHERE bar REGEXP ''[AZ]'';
Es posible que desee utilizar una collation sensible a mayúsculas y minúsculas. Creo que el valor predeterminado es insensible a mayúsculas y minúsculas. Ejemplo:
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'');
Entonces:
SELECT * FROM my_table WHERE name REGEXP ''^[A-Z]+$'';
+------+-----------+
| id | name |
+------+-----------+
| 3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)
Si no desea usar una clasificación que se distinga entre mayúsculas y minúsculas para toda la tabla, también puede usar la cláusula COLLATE
como se sugiere en @kchau en la otra respuesta .
Probemos con una tabla usando una intercalación que no distinga mayúsculas y minúsculas:
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'');
Esto no funcionará muy bien:
SELECT * FROM my_table WHERE name REGEXP ''^[A-Z]+$'';
+------+-----------+
| id | name |
+------+-----------+
| 1 | SomeThing |
| 2 | something |
| 3 | SOMETHING |
+------+-----------+
3 rows in set (0.00 sec)
Pero podemos usar la cláusula COLLATE
para clasificar el campo de nombre en una clasificación que distingue entre mayúsculas y minúsculas:
SELECT * FROM my_table WHERE (name COLLATE latin1_general_cs) REGEXP ''^[A-Z]+$'';
+------+-----------+
| id | name |
+------+-----------+
| 3 | SOMETHING |
+------+-----------+
1 row in set (0.00 sec)
Esto funcionó para mí. Encontró todos los correos electrónicos de los usuarios con caracteres en mayúsculas:
SELECT * FROM users WHERE mail REGEXP BINARY ''[A-Z]'';
Mediante el uso de REGEXP
: http://www.tech-recipes.com/rx/484/use-regular-expressions-in-mysql-select-statements/
Use [:upper:]
para las letras mayúsculas.
SELECT * FROM table WHERE field REGEXP ''^[[:upper:]+]$''
Prueba esto -
select * from <mytable> where upper(<columnname>) = <columnname>
SELECT column_name FROM table WHERE column_name REGEXP BINARY ''^[A-Z]+$''
select * from table1 where (columnname COLLATE latin1_bin )=upper(depart);