2010-11-08 15 views

Respuesta

61
SELECT * FROM my_table 
WHERE UPPER(some_field) != some_field 

Esto debería funcionar con divertidos personajes como åäöøüæï. Es posible que necesite utilizar una intercalación utf-8 específica de un idioma para la tabla.

+15

No funciona en caso de DB insensible, debe agregar COLLATE Latin1_General_CS_AS de Devraj Gadhavi answer –

+0

En MySQL 5.6, 'Latin1_General_CS_AS' provocó un error. 'COLLATE latin1_general_cs' trabajado sin embargo. – kouton

+0

@kouton editó [mi respuesta] (http://stackoverflow.com/a/14646445/1184435) para obtener más detalles sobre el problema al que se enfrentó. –

2
mysql> SELECT '1234aaaa578' REGEXP '^[a-z]'; 
+0

no funcionará con cualquier otro carácter que a-z, como åäöøüæï, etc. – geon

+1

Para su información. REGEXP y RLIKE usan el conjunto de caracteres actual al decidir el tipo de un personaje. El valor predeterminado es latin1 (cp1252 Europa occidental). Advertencia Los operadores REGEXP y RLIKE funcionan en modo byte, por lo que no son seguros en varios bytes y pueden producir resultados inesperados con conjuntos de caracteres de múltiples bytes. Además, estos operadores comparan caracteres por sus valores de bytes y los caracteres acentuados no se pueden comparar como iguales, incluso si una colación dada los trata como iguales. –

0

yo no soy un experto en MySQL que sugeriría nos fijamos en REGEXP.

SELECT * FROM MyTable WHERE ColumnX REGEXP '^[a-z]'; 
6

IN MS SQL server usa la cláusula COLLATE.

SELECT Column1 
FROM Table1 
WHERE Column1 COLLATE Latin1_General_CS_AS = 'casesearch' 

Agregar COLLATE Latin1_General_CS_AS hace que la búsqueda sea sensible.

La clasificación predeterminada de la instalación de SQL Server SQL_Latin1_General_CP1_CI_AS no distingue entre mayúsculas y minúsculas.

Para cambiar la intercalación de cualquier columna para cualquier tabla permanentemente ejecutada después de la consulta.

ALTER TABLE Table1 
ALTER COLUMN Column1 VARCHAR(20) 
COLLATE Latin1_General_CS_AS 

Conocer la intercalación de la columna para cualquier tabla ejecutada siguiendo el Procedimiento almacenado.

EXEC sp_help DatabaseName 

Fuente: SQL SERVER – Collate – Case Sensitive SQL Query Search

32
SELECT * FROM my_table WHERE my_column = 'my string' 
COLLATE Latin1_General_CS_AS 

Esto haría una búsqueda entre mayúsculas y minúsculas.


EDITAR

Como se indica en kouton 's comment here y tormuto' s comment here todo aquel que se enfrenta a un problema con el cotejo a continuación

COLLATE Latin1_General_CS_AS 

deben primero comprobar el default collation por su servidor SQL, su respectiva base de datos y la columna en cuestión; y pase la intercalación predeterminada con la expresión de consulta. La lista de intercalaciones se puede encontrar en here.

+2

Esto funciona bien. –

+0

Esto funciona en MS SQL. –

+0

Esto no funcionó desde phpmyadmin de mi servidor; recibí un error: Colación desconocida: 'Latin1_General_CS_AS'. Así que tuve que usar una intercalación más disponible en lugar de 'Latin1_General_CS' y funcionó. – tormuto

15
SELECT * FROM Yourtable 
WHERE UPPER([column_NAME]) COLLATE Latin1_General_CS_AS !=[Column_NAME] 
9

para buscar todas las filas en minúsculas

SELECT * 
FROM Test 
WHERE col1 
LIKE '%[abcdefghijklmnopqrstuvwxyz]%' 
collate Latin1_General_CS_AS 

Gracias Manesh Joseph

+0

Esto resolvió mi problema después de que cambié la cadena de comparación a mayúsculas. – sanepete

0

En PosgreSQL podría utilizar ~

Por ejemplo, podría buscar todas las filas que tienen col_a con cualquier letra en minúsculas

select * from your_table where col_a '[a-z]';

Puede modificar la expresión Regex según sus necesidades.

Saludos,

0

--Para Sql

SELECT * 
FROM tablename 
WHERE tablecolumnname LIKE '%[a-z]%'; 
0

tengo que añadir binarios al Columnx, al obtener resultado como mayúsculas y minúsculas

SELECT * FROM MyTable WHERE BINARY(ColumnX) REGEXP '^[a-z]'; 
0

Este es como lo hice para la tabla codificada utf8 y la columna utf8_unicode_ci, w HICH no parece que han sido escritos exactamente:

SELECT * 
FROM table 
WHERE UPPER(column) != BINARY(column) 
Cuestiones relacionadas