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.

Volt kezdetben az LTRIM és RTRIM és az SQL 2017-re végre megszületett a TRIM is. De egyből tovább is fejlesztették, mert nem csak sima space-eket vagdal, hanem meg tudunk adni egy listát is, hogy milyen karaktereket szedjen ki a megadott szöveg elejéről és végéről.

Az adatbázis egyes oszlopaiban csak egy-egy adatot tárolunk. Az adatbázis normalizálásnál ez fontos szempont. De ha esetleg megörököltünk valamit, és vesszővel vagy valami egyébbel elválasztott lista szerepel egy oszlopban, akkor mit csinálunk? Írunk vagy keresünk a neten egy functiont, amivel a listát az elválasztók alapján szét tudjuk szedni és egy táblázatban visszaadni. Szóba jöhetnek itt a CHARINDEX, PATINDEX, SUBSTRING, mint használandó funkciók.

De ehhez most már beépített eszközünk is van, a STRING_SPLIT funkció, amit az SQL 2016-ban vezettek be. Nagyszerűen lehet rendezni, szűrni, joinolni, tehát sok házi funkciót kiválthat.

Ennek mondhatni ellentétek a STRING_AGG, amivel egy listából tudunk a megadott elválasztóval egy értéket gyártani. Természetesen ez is SQL 2017-től használható.

Volt már, hogy mondjuk termék nevet copy-paste-tel tettek be az adatbázisba? Aztán maradt benne egy LF vagy egy CR? Ha erre rá szeretnél keresni, akkor hasznos a CHAR függvény, amivel az ilyen non-printable karaktereket is utol tudod érni.

select * from TableName where ColumnName like '%' + char(10) + '%'

Persze másra is használható, de leginkább ilyen esetekben látjuk igazi hasznát.

Összefűzésnél használhatjuk a sima + jelet is, de vannak hátrányai. A legnagyobb az, hogy csak stringeket tudunk így összefűzni. Viszont ha a CONCAT függvényt használjuk, akkor sokkal szabadabbak vagyunk:

select concat('ole', 1, getdate())

Ez simán lefut, magától konvertál stringre és csak a formázásra kell figyelnünk.

Sokan nem tudják, de van olyan beépített függvény is, ami megfordít egy szöveget. Meglepő, de a neve REVERSE.

A CONVERT és CAST megér egy külön bejegyzést, azokkal majd kicsit később.