ماڈیول اسباق (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;اسے آزمائیں
ہر آرڈر کے لیے، آئی ڈی اور دن دکھائیں (صرف تاریخ کا حصہ، قسم کی تاریخ)۔ دو کالم۔ آئی ڈی سے آرڈر کریں۔
اشارہ دکھائیں۔
TIMESTAMP → DATE کاسٹ وقت کو کم کرتا ہے: ordered_at::date۔
3 کوششوں کے بعد حل دستیاب ہے۔
ورزش کا جائزہ لیں۔
ہر گاہک کے لیے ایک لیبل کالم دکھائیں جو id اور ای میل کو ' - ' (جیسے '1 - alice.rossi@example.com') سے الگ کرتا ہے۔ آئی ڈی سے آرڈر کریں۔
اشارہ دکھائیں۔
|| آپریٹر کو اسی قسم کے آپرینڈز کی ضرورت ہوتی ہے: آئی ڈی کو ٹیکسٹ میں کاسٹ کرنا صاف ترین طریقہ ہے۔
3 کوششوں کے بعد حل دستیاب ہے۔