Kolacije (Collation)

Objavljeno: 27-02-2014 | Autor: Miloš Milenković | Kategorija: T-SQL

Ознаке:

0

Kolacija se može definisati kao skup pravila koji određuje kako se neki karakter ponaša u određenom jeziku. Najznačajni uticaj ima na sortiranje i poređenje karaktera. U principu, svaki jezik ima svoju kolaciju, koja može biti slična ili čak identična nekoj drugoj. Preko kolacije se definiše osetljivost na veličinu slova, oznake akcenta, tipove kana karaktera i širinu karaktera.

  • Osetljivost na veličinu slova: Ukoliko je podešena osetljivost na veličinu slova, SQL Server će različito tretirati A i a, B i b itd., zbog toga što je ASCII vrednost ovih karaktera različita. Ukoliko nije uključena osetljivost na veličinu slova, navedeni parovi karaktera će biti jednaki za SQL Server.
  • Osetljivost na oznake akcenta: Ukoliko je uključena osetljivost na oznake akcenta, SQL Server će različito tretirati a i á, o i ó itd. U suprotnom, navedeni parovi karaktera će se prilikom poređenja i sortiranja smatrati jednakim. Ovo je posebno važno kada radimo sa jezicima koji imaju ovakve znakove u pismu.
  • Osetljivost na tipove kana karaktera je specifična za japanski jezik. Ukoliko je uključena, Hiragana and Katakana karakteri će se tretirati kao različiti, u suprotnom kao jednaki.
  • Osetljivost na širinu karaktera se odnosi na veličinu karaktera u bajtovima. Ukoliko je uključena, dva ista karaktera od kojih je zbog različitih tipova podataka jedan veličine jednog bajta, a drugi veličine dva bajta će se smatratiti različitim, a u suprotnom jednakim.

Konkatenacija string vrednosti iz razlicitih redova (2. deo)

Objavljeno: 18-02-2014 | Autor: Tatjana Mađer | Kategorija: T-SQL

Ознаке:

2

Vrlo često se programeri susreću sa zahtevom da prikažu u aplikaciji izveštaj koji sadrži sumarne rezultate gde je potrebno prikazati u posebnoj koloni svakog sumarnog reda sve članove koji učestvuju u agregatnom redu.
U prethodnom delu ovog članka, objašnjeni su načini konkatenacije string vrednosti ukoliko je unapred poznat i ograničen broj redova i stringova koje treba spojiti.

Nepoznat broj redova

Slučajevi sa kojima se developeri najčešće susreću su oni kada je broj redova nepoznat. U ovim slučajevima je kod komplikovaniji i zahteva napredno poznavanje transakcionog SQL jezika. Varijanti za rešenje ovog problema ima više i najinteresantnije će biti objašnjene u nastavku.
a)   Korišćenje rekurzije uz pomoć CTE analogno generisanju hijerarhije. CASE u rekurzivnom delu upita je stavljen da bi se izbegao zarez na prvom mestu rezultata konkatenacije, što se može postići i na drugi način. Glavni nedostatak ove metode je to što brzina izvršavanja ovog upita postaje nezadovoljavajuća sa porastom broja nivoa. Treba obratiti pažnju i na sledeće: s obzirom na to da je podrazumevani limit za broj nivoa u rekurziji 100, preporuka je koristiti hint MAXRECURSION koji omogućava definisanje maksimalnog broja nivoa u rekurziji, gde je omogućeno definisati i beskonačan broj redova (Maxrecursion 0) što je i urađeno u narednom primeru.

Konkatenacija string vrednosti iz razlicitih redova (1. deo)

Objavljeno: 11-02-2014 | Autor: Tatjana Mađer | Kategorija: T-SQL

Ознаке:

3

Vrlo često se programeri susreću sa zahtevom da prikažu u aplikaciji izveštaj koji sadrži sumarne rezultate gde je potrebno prikazati u posebnoj koloni svakog sumarnog reda sve članove koji učestvuju u agregatnom redu.
Konkretan primer u bazi SQL_KEFALO ukoliko imamo tabelu sa crtanim filmovima i tabelu sa epizodama za svaki crtani film,

	select E.*, F.Naziv as NazivCrtaca 
	from dbo.CrtaneEpizode E
	inner join dbo.CrtaniFilmovi F
		on E.CrtacID=F.CrtacID

zahtev bi bio sledeći: