C# - Adatkonvertálási lehetőségek

Transact SQL 12. rész

forráskód letöltése
Ebben a részben azt vizsgáljuk, hogy miként tudunk a T-SQL-ben használható különféle adattípusok között konvertálni egyik típusról a másikra egy-egy adatot.
01.sql
Első lépés, hogy létrehozunk egy adatbázist ConvertTest névvel, melyet a bemutatandó példákhoz használunk.
02.sql
Következő lépésben egy táblát is létrehozunk és elhelyezünk benne néhány sornyi adatot is a tesztekhez.
create table Table01
(
  value1 int,
  value2 varchar(10),
  value3 datetime,
  value4 float,
  value5 bigint,
  value6 money
)
Itt az adatok beszúrásánál máris kénytelenek vagyunk egy adatkonvertálást végrehajtani szöveges adat és a datetime típus között, hogy a value3 mezőnek is értéket adhassunk. Ehhez a cast függvényt használjuk, melyben meg kell adnunk a konvertálandó kifejezést, majd az AS szó után azt a típust, melyre a megadott kifejezést konvertálnánk. Visszatérési érték a már konvertált adat lesz a kért típusban.
insert Table01 (value1, value2, value3, value4, value5, value6)
values (100, '1500', cast('05/12/2001 21:00:30' as datetime), 5.13, 965759685214758, 235.32);
03.sql
Ha a létrehozott dátum és idő típusú value3 oszlopot úgy jelenítjük meg, hogy a cast függvénnyel konvertáljuk char típusúvá, akkor érdekes dolog történik: nem a számok jelennek meg szövegként, hanem a dátum értelmezve lesz és ennek megfelelően a beállított aktuális nyelven jelenik meg a dátumnak az a része, mely belefér a konvertált típus hosszába.
use ConvertTest
set language Hungarian
select value3, cast(value3 as char(3))
from Table01
04.sql
A cast függvény használatával szinte minden típust tudunk bármely másikra konvertálni. Persze értelmetlen, vagy nem végrehajtható konverziók végrehajtásánál hibaüzenet kapunk.
select value2, cast(value2 as int)
from Table01
05.sql
Gyakori eset, hogy egy számot azért kell szöveggé konvertálnunk, hogy azt meg tudjuk jeleníteni egy másik szöveg kíséretében.
select value1, 'Text: '+cast(value1 as varchar(50))
from Table01
06.sql
Lehetőségünk van bináris formára is konvertálnunk az adatokat. A Delphi DBGrid-je e típusnak a megjelenítését nem támogatja, így ez esetben futtassuk az alábbi lekérdezést mondjuk az SQL Query Analizer programmal.
select value5, cast(value5 as binary)
from Table01
Konvertálva a value5 mező 965759685214758 értékét binárisra, a következő eredményt kapjuk: 0x36E5A72F9C226.
07.sql
A cast mellett létezik még egy convert nevű függvény is, mely szintén adatkonvertálást végez. Ennek első paraméterében kell megadnunk a konvertálandó típust, a másodikban a konvertálandó kifejezést. A harmadik paraméter opcionális és dátum típus, vagy valós, pénz típus konvertálása szövegessé esetén használatos. Értéke egy kódszám lehet, mely megmondja, hogy milyen formátumba kérjük elvégezni a konvertálást. 101-es kód például az USA-ban használatos mm/dd/yy formátumra hozza a dátumokat.
select value3, convert(varchar(40), value3, 101), convert(varchar(40), value3, 126)
from Table01
08.sql
A többi típus esetén a convert épp úgy használható, mint a cast.
select value6, convert(int, value6), convert(int, '963') from Table01
09.sql
A konvertálás műveletét elvégezhetjük a where feltételben is. Gyakori eset, hogy szám típusú mezőkben úgy szeretnénk leválogatást készíteni, hogy például az első számjegyet vennénk figyelembe a szám hosszától függetlenül. Ekkor a számot szöveggé konvertálva már használhatjuk a like '1%' feltételt, mellyel az összes olyan sort kiválogatjuk, melynek adott mezőjének értéke 1-el kezdődik.
select value1 from Table01 where convert(varchar(10), value1) like '1%'
10.sql
Végezetül töröljük a példákhoz létrehozott adatbázist.
use Master
DROP DATABASE ConvertTest 
select 'Adatbázis törölve'

Transact SQL cikksorozat

Transact SQL Referencia - Transact SQL 1. rész
Transact SQL további belső változói - Transact SQL 2. rész
Dátumkezelés a Transact SQL-ben - Transact SQL 3. rész
Sztringkezelés a Transact SQL-ben - Transact SQL 4. rész
Folyamatvezérlés eszközei a Transact SQL-ben - Transact SQL 5. rész
Összesítő függvények - Transact SQL 6. rész
Adatbázisok létrehozása, törlése - Transact SQL 7. rész
Adatbázis módosítás lehetőségei - Transact SQL 8. rész
Táblák létrehozása - Transact SQL 9. rész
Táblák módosítása, törlése - Transact SQL 10. rész
Rendszer funkciók - Transact SQL 11. rész

Adatkonvertálási lehetőségek - Transact SQL 12. rész

Tárolt eljárás létrehozása - TransactSQL 13. rész
Triggerek kezelése - Transact SQL 14. rész
Indexek létrehozása - Transact SQL 15. rész
Függvények definiálása - Transact SQL 16. rész
Függvények felüldefiniálása és törlése - Transact SQL 17. rész
Szabályok létrehozása - Transact SQL 18. rész
Alapértelmezett értékek megadása - Transact SQL 19. rész
Nézet táblák létrehozása - Transact SQL 20. rész
Nézettáblák módosítása - Transact SQL 21. rész
Adatbázis és tranzakciós napló mentése - Transact SQL 22. rész
Elmentett adatbázis és tranzakciós napló visszaállítása - Transact SQL 23. rész
Full-Text Catalog létrehozása, használata - Transact SQL 24. rész
Full-Text Catalog további lehetőségei - Transact SQL 25. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 26. rész
Tranzakció-kezelés az MS SQL-ben - Transact SQL 27. rész
SET parancsok - Transact SQL 28. rész