Ravindra BagaleCourses & study guides Track your progress

6. Analysts ना रोज भेटणारे SQL Data Types

6.4 typeof() ने type तपासा आणि CAST ने बदला

का (Why). Import केलेल्या files मध्ये आकडे बऱ्याचदा text म्हणून, commas किंवा spaces सोबत येतात. Text value ची आकड्याशी तुलना केली तर अनपेक्षित result येऊ शकतो.

काय (What). CAST(value AS REAL) text चं आकड्यात रूपांतर करतं. ते सुरुवातीपासून अंक वाचतं आणि न समजणाऱ्या पहिल्या अक्षरावर थांबतं, म्हणून '1,200.50' चं 1.0 होतं आणि 'N/A' चं 0.0 होतं. TEXT column ची आकड्याशी तुलना text म्हणून होते, म्हणून '400' हा 1000 पेक्षा मोठा धरला जातो.

कसं (How). raw_amount शेजारी शेजारी typeof() आणि CAST सोबत बघा, आणि मग text comparison चा सापळा बघा.

पायऱ्या

  1. पहिलं उदाहरण run करा आणि raw_amount ची cast_value column शी तुलना करा.
  2. Comma मुळे किंवा N/A text मुळे CAST ने चुकीचा आकडा दिला ते rows शोधा.
  3. दुसरं उदाहरण run करा आणि '400' असलेला row 8 filter मध्ये राहतो हे बघा.
  4. आकड्यांच्या text column वरचा filter तो स्वच्छ किंवा cast करेपर्यंत विश्वासाने वापरू नका.

उदाहरणे

उदाहरण 1 · dataset: northstar_bank

SELECT txn_id, raw_amount,
       typeof(raw_amount)       AS stored_as,
       CAST(raw_amount AS REAL) AS cast_value,
       amount
FROM transactions
WHERE txn_id IN (2, 4, 13, 15, 20);

Output

txn_idraw_amountstored_ascast_valueamount
21,200.50text1.01200.5
4 650.25text650.25650.25
1356,000text56.056000.0
15N/Atext0.091000.0
20null47000.0

Meaning. सुरुवातीची space चालते, म्हणून ' 650.25' चं 650.25 होतं. Comma मुळे आकडा तुटतो, म्हणून '1,200.50' चं 1.0 आणि '56,000' चं 56.0 होतं. 'N/A' चं 0.0 होतं आणि NULL तसाच NULL राहतो.

उदाहरण 2 · dataset: northstar_bank

SELECT txn_id, raw_amount
FROM transactions
WHERE raw_amount > 1000
  AND txn_id IN (3, 8, 11, 15);

Output

txn_idraw_amount
38000
8400
11300.10
15N/A

Meaning. चारही rows पास होतात, अगदी 400, 300.10 आणि N/A सुद्धा. Text column मुळे 1000 चा text '1000' होतो, आणि text क्रमात '4' हा '1' नंतर येतो.

Ravindra Bagale's Tip

When a filter on numbers gives strange rows, run typeof() first. The column is often TEXT.