2012-08-23 9 views

Respuesta

34

Si su cotejo es sensible a mayúsculas a continuación, es necesario utilizar una comparación BINARY:

SELECT * 
FROM yourtable 
WHERE Name = BINARY UPPER(Name) 

ver su funcionamiento en línea: sqlfiddle

+0

¡Binario es la clave aquí! ¡Gracias! – ThinkCode

6

sólo tiene que utilizar la función UPPER() en el campo Name y comparar los resultados con el valor original de Name:

select Name from Table where Name = UPPER(Name) 

De esta manera

UPPER(Name) || Name 
--------------------------------------- 
JOHN   != John 
MARY   == MARY 
KIN   != Kin 
TED   == TED 

sólo las filas que necesita será devuelto.

Como @mdoyle comentó aquí, debe definir la columna con la colación correcta (distingue entre mayúsculas y minúsculas); de lo contrario, como otros respondieron, necesita el operador BINARY para comparar columnas que no distinguen entre mayúsculas y minúsculas.

+2

Depende de la intercalación y el tipo de datos. Si el tipo de datos no es binario y la intercalación es, por ejemplo, latin1, las comparaciones de cadenas serán insensibles a las mayúsculas y minúsculas. Así que creo que la respuesta de Mark Byers es la más precisa hasta ahora. – mdoyle

+0

El binario es esencial en este caso (al menos en mi caso). Todavía votando por la información. – ThinkCode

2

Prueba esto:

select name from table where name=upper(name); 
+1

Esto solo funciona con tipos de datos binarios o la clasificación correcta. – Tom

0

Esto también devolver valores numéricos, pero esa mirada doesnt a ser un problema para el nombre de la columna.

SELECT * FROM names WHERE 

ASCII(name) = ASCII(Upper(name)) 
+0

Esto solo funciona con tipos de datos binarios o la clasificación correcta. – Tom

1

Prueba esto:

SELECT Name 
FROM table 
WHERE Name COLLATE latin1_general_cs LIKE UPPER(Name) 
; 
1

Uso A continuación:

SELECT name FROM table WHERE name = BINARY UPPER(column_name); 
Cuestiones relacionadas