primeras primera poner palabra minusculas mayusculas mayuscula letras letra initcap distinguir cambiar cada mysql

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



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