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 चा सापळा बघा.
पायऱ्या
- पहिलं उदाहरण run करा आणि raw_amount ची cast_value column शी तुलना करा.
- Comma मुळे किंवा N/A text मुळे CAST ने चुकीचा आकडा दिला ते rows शोधा.
- दुसरं उदाहरण run करा आणि '400' असलेला row 8 filter मध्ये राहतो हे बघा.
- आकड्यांच्या 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_id | raw_amount | stored_as | cast_value | amount |
|---|---|---|---|---|
| 2 | 1,200.50 | text | 1.0 | 1200.5 |
| 4 | 650.25 | text | 650.25 | 650.25 |
| 13 | 56,000 | text | 56.0 | 56000.0 |
| 15 | N/A | text | 0.0 | 91000.0 |
| 20 | null | 47000.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_id | raw_amount |
|---|---|
| 3 | 8000 |
| 8 | 400 |
| 11 | 300.10 |
| 15 | N/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.
Ravindra Bagale's Tip – मराठी
आकड्यांवरचा filter विचित्र rows देत असेल, तर आधी typeof() चालवा. बऱ्याचदा तो column TEXT असतो.
Ravindra Bagale's Tip – हिंदी
अंकों वाला filter अजीब rows दे रहा हो, तो पहले typeof() चलाइए। अक्सर वह column TEXT होता है।