HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Adatkonvertálási lehetőségek


Transact SQL 12. rész

Példaprogram letöltése

10990 bájt

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'

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2001 évkönyv 421. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |