2012-08-23 18 views

Odpowiedz

34

Jeśli sortowanie jest wielkość liter ma znaczenie wtedy trzeba użyć porównania BINARY:

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

Zobacz pracuje w trybie online: sqlfiddle

+0

Binary jest tutaj kluczem! Dziękuję Ci! – ThinkCode

6

po prostu użyć funkcji UPPER() na polu Name i porównać wyniki z pierwotnej wartości Name:

select Name from Table where Name = UPPER(Name) 

ten sposób

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

tylko wiersze potrzebne będą zwracane.

Jak @mdoyle skomentował tutaj należy zdefiniować kolumnę z prawej sortowania (liter), w przeciwnym razie, jak inni nie odpowiedzieć trzeba operatora BINARY porównać wielkość liter ma znaczenie kolumn.

+2

W zależności od sortowania i typu danych. Jeśli typ danych nie jest binarny, a sortowanie jest, na przykład, latin1, porównywanie ciągów będzie rozróżniane bez względu na wielkość liter. Dlatego uważam, że odpowiedź Marka Byersa jest jak dotąd najdokładniejsza. – mdoyle

+0

Binary jest niezbędna w tym przypadku (przynajmniej w moim przypadku). Nadal zabiegam o informacje. – ThinkCode

2

Spróbuj tego:

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

Działa to tylko w przypadku typów danych binarnych lub prawidłowego sortowania. – Tom

0

Będzie to również zwracać wartości liczbowych, ale to nie robi wygląd się być problemem dla nazwy kolumny.

SELECT * FROM names WHERE 

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

Działa to tylko w przypadku typów danych binarnych lub prawidłowego sortowania. – Tom

1

Spróbuj:

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

Użyj Poniżej:

SELECT name FROM table WHERE name = BINARY UPPER(column_name); 
Powiązane problemy