முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 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ஏற்றுகிறது…

ஒவ்வொரு ஆர்டருக்கும், ஐடி மற்றும் நாளைக் காட்டவும் (order_at இன் தேதி பகுதி, வகை தேதி மட்டும்). இரண்டு நெடுவரிசைகள். ஐடி மூலம் ஆர்டர் செய்யுங்கள்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

TIMESTAMP → DATE அனுப்பிய நேரம்: order_at::date.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#sql.m6.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

ஒவ்வொரு வாடிக்கையாளருக்கும் ' - ' (எ.கா. '1 - alice.rossi@example.com') மூலம் பிரிக்கப்பட்ட ஐடி மற்றும் மின்னஞ்சலை இணைக்கும் லேபிள் நெடுவரிசையைக் காட்டு. ஐடி மூலம் ஆர்டர் செய்யுங்கள்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தி || ஆபரேட்டருக்கு ஒரே மாதிரியான செயல்பாடுகள் தேவை: ஐடியை உரைக்கு அனுப்புவது சுத்தமான வழி.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்