Az SQL vagy Structured Query Language egy számítógépes nyelv, amelyet adatbázisok kezelésére és manipulálására használnak. Az SQL egyik alapvető művelete az adatkonverzió. Ez a folyamat egy érték adattípusának egyik formáról a másikra történő megváltoztatását jelenti. Ebben a cikkben az SQL-ben az egész számok karakterekké való átalakítására összpontosítunk.
Az SQL-ben az egész számok numerikus adattípusok, amelyek egész számokat jelölnek. Ezzel szemben a karakterek nem numerikus adattípusok, amelyek szöveget képviselnek. Bizonyos esetekben szükség lehet az egész számok karakterekké történő átalakítására, különösen a karakterláncfüggvényekkel való munka vagy az adatok szöveges formátumban történő megjelenítése során.
Egész számok karakterré alakításához az SQL-ben a CAST vagy CONVERT függvényt használjuk. A CAST függvény egy értéket egyik adattípusból egy másikba konvertál, míg a CONVERT függvény egy értéket egyik adattípusból egy másikba konvertál egy megadott stílusban. Egész szám karakterré konvertálásához a két függvény bármelyikét használhatjuk, de a CAST függvényt egyszerűsége miatt előnyben részesítjük.
„`
CAST (integer_value AS char [ ( length ) ] )
„`
A fenti szintaxisban integer_value a konvertálni kívánt egész szám, char a karakter adattípus, length pedig a kapott karakter maximális hossza. Ha nem adjuk meg a length paramétert, akkor a kapott karakter hossza megegyezik az integer értékkel. Például az 1234 egész számot karakterré konvertálhatjuk a következő SQL-lekérdezéssel:
„„
SELECT CAST(1234 AS char)
„„
Összefoglalva, az egész számok karakterré alakítása egyszerű folyamat az SQL-ben. A művelet elvégzéséhez a CAST vagy a CONVERT függvényt használhatjuk. A pontos eredmény érdekében fontos, hogy megértsük az érintett adattípusokat és megadjuk a megfelelő paramétereket. Ezen ismeretek birtokában az SQL-fejlesztők különböző formátumú adatokat manipulálhatnak és jeleníthetnek meg, növelve ezzel az adatbázis-alkalmazások használhatóságát.
Egy új vállalkozás alapításakor elengedhetetlen, hogy jól értsük, hogyan kezeljük hatékonyan az adatokat. Ennek részeként szükség lehet arra, hogy a számokat SQL-ben szavakká alakítsa át, hogy az adatok könnyebben áttekinthetők legyenek ránézésre. Íme, hogyan teheti ezt meg:
1. Hozzon létre egy függvényt a számok szavakká alakításához. Íme egy példa:
„`
CREATE FUNCTION dbo.NumToWords(@Number INT)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @Words VARCHAR(8000)
SET @Words = ”
IF @Number = 0
SET @Words = ‘Zero’
ELSE
BEGIN
DECLARE @Units TABLE (ID INT, Word VARCHAR(10))
INSERT INTO @Units VALUES (1, ‘One’), (2, ‘Two’), (3, ‘Three’), (4, ‘Four’), (5, ‘Five’), (6, ‘Six’), (7, ‘Seven’), (8, ‘Eight’), (9, ‘Nine’)
DECLARE @Tens TABLE (ID INT, Word VARCHAR(10))
INSERT INTO @Tens VALUES (1, ‘Ten’), (2, ‘Twenty’), (3, ‘Thirty’), (4, ‘Forty’), (5, ‘Fifty’), (6, ‘Sixty’), (7, ‘Seventy’), (8, ‘Eighty’), (9, ‘Ninety’)
DECLARE @Teens TABLE (ID INT, Word VARCHAR(10))
INSERT INTO @Teens VALUES (11, ‘Eleven’), (12, ‘Twelve’), (13, ‘Thirteen’), (14, ‘Tizennégy’), (15, ‘Tizenöt’), (16, ‘Tizenhat’), (17, ‘Tizenhét’), (18, ‘Tizennyolc’), (19, ‘Tizenkilenc’)
DECLARE @Thousands TABLE (ID INT, Word VARCHAR(10))
INSERT INTO @Thousands VALUES (1, ‘Ezer’), (2, ‘Millió’), (3, ‘Milliárd’), (4, ‘Trillion’)
DECLARE @Remainder INT
DECLARE @Quotient INT
DECLARE @Hundreds INT
DECLARE @TensVal INT
DECLARE @UnitsVal INT
DECLARE @Index INT
DECLARE @GroupCount INT
DECLARE @GroupValue INT
DECLARE @GroupWords VARCHAR(8000)
SET @Index = 1
SET @GroupCount = 0
SET @Remainder = @Number
WHILE @Remainder > 0
BEGIN
SET @Quotient = @Remainder / 1000
SET @Remainder = @Remainder % 1000
SET @Remainder % 1000
SET @Hundreds = @Remainder / 100
SET @Remainder = @Remainder % 100
SET @TensVal = @Remainder / 10
SET @Remainder = @Remainder % 10
SET @UnitsVal = @Remainder
SET @GroupValue = (@Hundreds * 100) + (@TensVal * 10) + @UnitsVal
SET @GroupWords = ”
IF @GroupValue > 0
BEGIN
IF @Hundreds > 0
BEGIN
SET @GroupWords = @GroupWords + (SELECT Word FROM @Units WHERE ID = @Hundreds) + ‘ Hundred’
IF @GroupValue > 100
SET @GroupWords = @GroupWords + ‘ ‘
END
IF @TensVal = 1 AND @UnitsVal > 0
BEGIN
SET @GroupWords = @GroupWords + (SELECT Word FROM @Teens WHERE ID = (@UnitsVal + 10))
END
ELSE
BEGIN
IF @TensVal > 0
BEGIN
SET @GroupWords = @GroupWords + (SELECT Word FROM @Tens WHERE ID = @TensVal)
IF @UnitsVal > 0
SET @GroupWords = @GroupWords + ‘ ‘
END
IF @UnitsVal > 0 AND @TensVal 1
BEGIN
SET @GroupWords = @GroupWords + (SELECT Word FROM @Units WHERE ID = @UnitsVal)
END
END
IF @GroupCount > 0 AND @GroupWords ”
SET @GroupWords = @GroupWords + ‘ ‘ + (SELECT Word FROM @Thousands WHERE ID = @GroupCount)
SET @GroupCount = @GroupCount + 1
END
SET @Index = @Index * 1000
IF @GroupWords ”
BEGIN
IF @Words ”
SET @Words = ‘ ‘ ‘ + @Words
SET @Words = @GroupWords + @Words
END
END
END
END
RETURN @Words
END
„`
2. A függvény segítségével alakítsuk át a számokat szavakká. Íme egy példa:
„„
SELECT dbo.NumToWords(123456789)
„„
Ez a „Százhuszonhárommillió-négyszázötvenhatezer-hétszáznyolcvankilenc” karakterláncot adja vissza.