మాడ్యూల్ పాఠాలు (4/4)
CAST మరియు రకం మార్పిడులు
SQL గట్టిగా టైప్ చేయబడింది: ప్రతి నిలువు వరుసలో ఒక రకం ఉంటుంది (INTEGER, TEXT,
NUMERIC, DATE, TIMESTAMP…), మరియు అనేక కార్యకలాపాలకు రకాలు అవసరం
** మ్యాచ్**. అవి లేనప్పుడు — లేదా మీరు విలువను ఫార్మాట్ చేయాలనుకున్నప్పుడు
భిన్నంగా - మీరు తారాగణంని ఉపయోగిస్తారు.
రెండు సమానమైన వాక్యనిర్మాణాలు
-- SQL standard:
CAST(123 AS TEXT)
-- PostgreSQL shorthand (più comune nella pratica):
123::textరెండు రూపాలు ఒకేలా ఉంటాయి. సంక్షిప్తలిపి ::type మరింత కాంపాక్ట్ మరియు
ఇతర వ్యక్తీకరణలతో చక్కగా గొలుసులు:
SELECT ordered_at::date AS day,
(oi.quantity * oi.unit_price)::numeric(10,2) AS total,
id::text || ' - ' || email AS label
FROM …;డేటాసెట్లో ఉపయోగకరమైన క్యాస్ట్లు
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తారాగణం ఎప్పుడు విఫలమవుతుంది
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తో.
ప్రసారం చేసి ఆర్డర్ చేయండి
సూక్ష్మ బగ్లను రూపొందించే సందర్భం: సంఖ్యలను క్రమబద్ధీకరించడం టెక్స్ట్గా నిల్వ చేయబడుతుంది.
SELECT '2', '10', '1' ORDER BY 1; -- '1', '10', '2' (alfabetico!)పరిష్కారం: ORDER BY లోపల ప్రసారం చేయండి:
SELECT code FROM articles ORDER BY code::int;దీనిని ప్రయత్నించండి
ప్రతి ఆర్డర్ కోసం, id మరియు రోజును చూపండి (order_at యొక్క తేదీ భాగం, రకం తేదీ మాత్రమే). రెండు నిలువు వరుసలు. ID ద్వారా ఆర్డర్ చేయండి.
సూచనను చూపించు
TIMESTAMP → DATE ప్రసారం సమయం: order_at::date.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
ప్రతి కస్టమర్ కోసం ' - ' (ఉదా. '1 - alice.rossi@example.com') ద్వారా వేరు చేయబడిన id మరియు ఇమెయిల్లను సంగ్రహించే లేబుల్ నిలువు వరుసను చూపండి. ID ద్వారా ఆర్డర్ చేయండి.
సూచనను చూపించు
ది || ఆపరేటర్కు ఒకే రకమైన ఒపెరాండ్లు అవసరం: ఐడిని టెక్స్ట్కి ప్రసారం చేయడం అనేది పరిశుభ్రమైన మార్గం.
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది