ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 6 · 4లో పాఠం 4కోర్సులో 24/57~10 min
మాడ్యూల్ పాఠాలు (4/4)

CAST మరియు రకం మార్పిడులు

SQL గట్టిగా టైప్ చేయబడింది: ప్రతి నిలువు వరుసలో ఒక రకం ఉంటుంది (INTEGER, TEXT, NUMERIC, DATE, TIMESTAMP…), మరియు అనేక కార్యకలాపాలకు రకాలు అవసరం ** మ్యాచ్**. అవి లేనప్పుడు — లేదా మీరు విలువను ఫార్మాట్ చేయాలనుకున్నప్పుడు భిన్నంగా - మీరు తారాగణంని ఉపయోగిస్తారు.

రెండు సమానమైన వాక్యనిర్మాణాలు

SQL
-- SQL standard:
CAST(123 AS TEXT)

-- PostgreSQL shorthand (più comune nella pratica):
123::text

రెండు రూపాలు ఒకేలా ఉంటాయి. సంక్షిప్తలిపి ::type మరింత కాంపాక్ట్ మరియు ఇతర వ్యక్తీకరణలతో చక్కగా గొలుసులు:

SQL
SELECT ordered_at::date AS day,
       (oi.quantity * oi.unit_price)::numeric(10,2) AS total,
       id::text || ' - ' || email AS label
FROM   …;

డేటాసెట్‌లో ఉపయోగకరమైన క్యాస్ట్‌లు

SQL
TIMESTAMP → DATE          ordered_at::date
NUMERIC   → INTEGER       price::int           -- tronca!
INTEGER   → NUMERIC       quantity::numeric    -- per evitare div. intera
INTEGER   → TEXT          id::text             -- per concatenare con ||
TEXT      → DATE          '2024-03-05'::date
NUMERIC   → TEXT          price::text          -- per LIKE su numeri

తారాగణం ఎప్పుడు విఫలమవుతుంది

SQL
SELECT 'abc'::int;   -- ERRORE: invalid input syntax for type integer
SELECT '12.5'::int;  -- ERRORE: invalid input syntax for type integer
SELECT 12.5::int;    -- 12   (cast numerico-numerico: arrotonda)

స్ట్రింగ్ → నంబర్ లేదా స్ట్రింగ్ → తేదీ నుండి ప్రసారాలు అత్యంత ప్రమాదకరమైనవి: స్ట్రింగ్ ఊహించిన దానితో సరిగ్గా సరిపోలకపోతే వారు లోపాన్ని లేవనెత్తారు ఫార్మాట్. ఉత్పత్తిలో, బాహ్య డేటాపై, ముందుగా ధృవీకరించడం ఉత్తమం TRIM / LOWER / regexతో.

ప్రసారం చేసి ఆర్డర్ చేయండి

సూక్ష్మ బగ్‌లను రూపొందించే సందర్భం: సంఖ్యలను క్రమబద్ధీకరించడం టెక్స్ట్‌గా నిల్వ చేయబడుతుంది.

SQL
SELECT '2', '10', '1' ORDER BY 1;  -- '1', '10', '2'   (alfabetico!)

పరిష్కారం: ORDER BY లోపల ప్రసారం చేయండి:

SQL
SELECT code FROM articles ORDER BY code::int;

దీనిని ప్రయత్నించండి

వ్యాయామం#sql.m6.l4.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ప్రతి ఆర్డర్ కోసం, id మరియు రోజును చూపండి (order_at యొక్క తేదీ భాగం, రకం తేదీ మాత్రమే). రెండు నిలువు వరుసలు. ID ద్వారా ఆర్డర్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

TIMESTAMP → DATE ప్రసారం సమయం: order_at::date.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#sql.m6.l4.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ప్రతి కస్టమర్ కోసం ' - ' (ఉదా. '1 - alice.rossi@example.com') ద్వారా వేరు చేయబడిన id మరియు ఇమెయిల్‌లను సంగ్రహించే లేబుల్ నిలువు వరుసను చూపండి. ID ద్వారా ఆర్డర్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

ది || ఆపరేటర్‌కు ఒకే రకమైన ఒపెరాండ్‌లు అవసరం: ఐడిని టెక్స్ట్‌కి ప్రసారం చేయడం అనేది పరిశుభ్రమైన మార్గం.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది