Van egy pár hasznos formázási szabály, amit érdemes betartani, amikor kódot írsz, és ez ugyanúgy érvényes az SQL kódokra is.
bejegyzés
Count(*), count(valami) és count(distinct valami)
Már háromszor is volt szó a count használatáról. Először általánosan, aztán az existtel kapcsolatban, majd a count_big és az int típusok használtánál.
SQL Saturday #850
A műsor nagyon változatos volt, bár mintha kevesebb előadás lett volna, mint tavaly, de erre nem merek megesküdni. A magyar nyelvű előadások az ígéret szerint elő fognak még kerülni következő SQL Meetupokon is, be lehet pótolni és némelyik előadás slide-jai is letölthetőek már az SQL Saturday oldaláról.
Pár hasznos string funkció
Stringeket mindenki piszkált már valószínűleg. Hiába szép egy adatbázis, hiába van szépen megtervezve, kivitelezve, becsúszhat pár olyan dolog, ami miatt kénytelenek vagyunk az adatokat megdolgozni.
Count és count_big
A count ugye megszámol valamit, de miért van rá két külön funkció? Mi ez a count_big? Másképpen számolnak? Mást számolnak? Nem igazán. Egyetlen különbség a visszatérő értékük, aminek típusa int vagy bigint.
use database feltételesen
A probléma
Érdekes problémába futottam bele: use parancs feltételes használata. Valami ilyesmit képzeljetek el, hogy
if exists(select 1 from sys.databases where name='akarmi')
begin
use akarmi
parancsok tömkelege az adott adatbázisra
end
Csak éppen ez így nem működik.
Truncate vagy delete
Elvileg mindkét paranccsal egy tábla tartalmát tudjuk törölni, de mivel külön van delete és külön van truncate, gondolhatjuk, hogy vannak különbségek. Van is különbség, mégpedig olyanok, amik miatt nagyon meg kell gondolni, hogy melyiket használjuk egy-egy esetben.
Szöszmösz az adatbázisban
Múlt héten elkezdett egy adatbázisban némelyik rekord köhögni, nem akarta rendesen visszaadni a WCF service és furcsa hibákat írogatott. A hiba valami olyasmire utalt, hogy nem sikerült valami automatikus konverzió:
Unable to translate Unicode character \uD83D at index 0 to specified code page.
Említ még EncoderExceptionFallbackBuffert, UnsafeGetUTF8Length-et, szóval gyanús az egész.
SSIS csomag átírása T-SQL-re
Van egy jó kis SSIS csomagunk, ami nagyjából semmi mást nem csinál, csak adatokat tesz át egyik szerverről egy másikra. Nincs benne különösebb logika, nincs benne transzformáció, tényleg 99%-ban az a belseje, hogy truncate table xy; insert into másikszerver..tábla select from ezaszerver..tábla;
Mivel az Integration Services csomagokat nem lehet igazából merge-elni semmilyen verziókövető rendszerben, ezért megpróbáltam áttenni sima TSQL-be.