Tutorial SQL

Przykłady, tutorial, gotowe rozwiązania sql.

Kategoria: MS SQL


Rozróżnianie wielskości liter. Collate


Przeważnie by nie komplikować sobie życia w bazie danych ustawiamy Collate na case insensitive co oznacza,że dla MS SQL Server obojętne jest czy używamy małych czy dużych znaków.



Celem odróżnienia małych i dużych znaków, użyć trzeba COLLATE CS czy case sensitive np Polish_CS_AI. Możemy zadeklarować collate podczas tworzenia tabeli, w warunkach łączenie lub dla zmiennej.
create table dane (id int, tekst nvarchar(50) collate  Polish_CS_AI);





W tak stworzonej tabeli w warnuku WHERE będzie miało znaczenie czy wpisuje małe czy duże litery.



Przykład rozróżniania wielkości liter w MS SQL SERVER





select 
1
where
'a' collate  Polish_CI_AI = 'A' collate  Polish_CI_AI

select 1 where
'a' collate  Polish_CS_AI  = 'A'  collate  Polish_CS_AI




CS_AS - wrażliwe na wielkość, wrażliwe na akcenty

CS_AI - wrażliwe na wielkość, nie wrażliwe na akcenty

CI_AS - nie wrażliwe na wielkość, wrażliwe na akcenty

CI_AI - nie wrażliwe na wielkość, nie wrażliwe na akcenty



Jak sprawdzić jakie mamy dostępne collate?:
SELECT *
FROM fn_helpcollations() where name like '%polish%'





Możliwe jest również nie rozróżnianie przez serwer polskich znaków diakrytyczne (liter z ogonkami). Wykorzystam tu AI czyli nie wrażliwość na akcent.
declare @var1 varchar(10)
declare @var2 varchar(10)
set @var1 ='A'
set @var2 = 'ą'
if @var1 collate SQL_Latin1_General_CP1_CI_AI = @var2 collate SQL_Latin1_General_CP1_CI_AI
print 'A and ą to samo'
else
print 'A and ą are nie to samo'








powrót















SQL-KURSY.pl poleca:

Książki
ksikaksikaksikaksikaksika

Copyright 2010-2011mariuszhk@op.pl

obob ob

Valid HTML 4.01 Transitional

Strona internetowa wykorzystuje pliki cookie zapisywane w pamięci przeglądarki internetowej.

OK