2011-07-25 16 views
5

zauważyłem w MySQL WHERE jak WHERE x = 'Test' będzie pasował niezależnie od przypadku („test”, „test”, itd.)SQL i wielkość liter ma znaczenie Warunki

Przy użyciu PDO, jest to sprawiedliwe, by zakładać, że ten ma miejsce w przypadku większości serwerów baz danych? Na przykład, jeśli miałbym używać MSSQL lub Oracle, czy byłby to ten sam przypadek?

+0

@rabudde Myślałem, że tak było, ale mogę was zapewnić, że zapytanie pasuje do niego niewrażliwie. –

+0

Wielkość liter zależy od sortowania kolumn. – Karolis

Odpowiedz

8

To nie jest serwer, to zależy, ale sortowania. Większość baz danych będzie domyślnie sortować bez rozróżniania wielkości liter, więc możesz to założyć, ale jeśli kiedykolwiek napotkasz na wielkość liter, łatwo jest to zmienić.

+0

Czy możliwe jest posiadanie danych wrażliwych/niewrażliwych na podstawie poszczególnych pól? czy jest to na całej tablicy? –

+1

@Lea Tak jest. – Karolis

+1

Można określić sortowanie nie tylko dla konkretnej kolumny, ale także dla konkretnego porównania, określając w razie potrzeby "COLLATE collation_name". –

1

Oracle rozróżnia wielkość liter z domyślnie danymi np.

select * from 'test'; 

nie równa

select * from 'TEST'; 

Dawno kiedy ostatnio je stosować, ale wydaje mi się przypomnieć sprawę Informix beiung wrażliwy i Sybase myślę zależy od zestawień.

Jak zauważono w innych odpowiedziach, SQL Server zależy od sortowania.

Więc myślę, że jedyną prawdziwą odpowiedzią jest zależna od RDBMS

1

SQL Server jest sprawa niewrażliwe domyślnie. W SQL Server można używać sortowania do porównywania wielkości liter, zobacz here.

Domyślnie w Oracle jest rozróżniana wielkość liter. Możesz użyć instrukcji "UPPER", aby przeprowadzić wyszukiwanie bez rozróżniania wielkości liter, zobacz here.

+0

czy wiesz, że 'UPPER' jest standardem dla wszystkich SQL? Czy istnieje lista standardowych funkcji/etc, które mogłem użyć dla odniesienia? Dzięki –

Powiązane problemy