otrdiena, 2011. gada 6. decembris

Teksta salīdzināšana, kolācijas

Pajautāja, kā salīdzināt teksta virknes tā, lai tiktu ņemti vērā lielie/mazie burti. Atbilde- izmantot kolācijas. Joprojām rakstu par šo tēmu neesmu uzrakstījis, bet ceru ka tas kādu dienu tomēr notiks.

Cik esmu redzējis, tad visbiežāk datu bāzēs Latvijā tiek izmantota kolācija "Latvian_CI_AS". Latvian nozīmē valodu, CI nozīmē Case Insensitive, AS nozīmē Accent Sensitive. Tātad- lielie un mazie burti tiek uzskatīti par vienu un to pašu, savukārt garumzīmes (a un ā) tiek atšķirti kā dažādi burti.

Tātad, ja datu bāzē glabājat datus izmantojot "Latvian_CI_AS" kolāciju (vai patiesībā jebkuru derīgu), bet nepieciešams salīdzināt tā, lai tiktu ņemti vērā lielie/mazie burti un/vai garumzīmes tad var izmantto "Collate" atslēgvārdu.

Šeit neliels piemērs (trīs dažādi salīdzināšanas varianti):
Create Table #Test
(
    Col1 nvarchar(50),
    Col2 nvarchar(50)
)
go
Insert Into #Test (Col1, Col2)
    Values ('aaa','aaa');
Insert Into #Test(Col1, Col2)
    Values ('aaa','aAa');
Insert Into #Test(Col1, Col2)
    Values ('aaa','aāa');
go
-- Parasti: Case Insensitive, Accent sensitive. Bet jums var atšķirties.
Select *
From #Test
Where Col1 = Col2
-- Case Sensitive, Accent sensitive
Select *
From #Test
Where Col1 = Col2 Collate Latvian_CS_AS
-- Case Sensitive, Accent Insitive
Select *
From #Test
Where Col1 = Col2 Collate Latvian_CS_AI
-- Case Insitive, Accent Insitive
Select *
From #Test
Where Col1 = Col2 Collate Latvian_CI_AI
Go
Drop table #Test

Nav komentāru:

Ierakstīt komentāru