10. Analysts रोज वापरतात ती Text Functions
10.3 LIKE आणि instr() ने text च्या आत कसं शोधायचं
का (Why). Analysts ना बऱ्याचदा ज्या rows च्या text मध्ये एखादा शब्द आहे ते rows हवे असतात, जसं नावात Traders असलेले सगळे customers. एखाद्या code मध्ये एखादं अक्षर कुठे आहे तेही माहीत हवं.
काय (What). % सोबत LIKE एखादा pattern असलेला text शोधतं; % म्हणजे कितीही अक्षरं. SQLite मध्ये LIKE फक्त साध्या English अक्षरांसाठी capital आणि small मधला फरक बघत नाही, म्हणून 'TRADERS' हे Traders शी जुळतं, पण É हे é शी जुळत नाही. बरेच इतर databases LIKE वेगळं वापरतात, उदाहरणार्थ PostgreSQL मध्ये capital आणि small वेगळे धरले जातात. instr(text, part) पहिला match कुठल्या जागी आहे ते 1 पासून मोजून सांगतं, आणि सापडलं नाही तर 0 देतं.
कसं (How). LIKE ने customer ची नावं शोधा, accent असलेलं अक्षर तपासा, आणि instr() ने tracking codes मधला पहिला dash शोधा.
पायऱ्या
- पहिलं उदाहरण run करा आणि capital TRADERS ने सुद्धा Kavya Traders सापडतो ते बघा.
- दुसरं उदाहरण run करा: 1 म्हणजे true आणि 0 म्हणजे false.
- तिसरं उदाहरण run करा आणि dash ची जागा आणि नसलेल्या अक्षरासाठी 0 वाचा.
- सुरुवातीला % असलेल्या LIKE ला प्रत्येक row तपासावा लागतो, म्हणून खूप मोठ्या tables वर ते हळू होऊ शकतं हे लक्षात ठेवा.
उदाहरणे
उदाहरण 1 · dataset: swiftship_logistics
SELECT customer_name
FROM customers
WHERE customer_name LIKE '%TRADERS%';Output
| customer_name |
|---|
| Kavya Traders |
Meaning. Pattern मध्ये capital अक्षरं असूनही SQLite ला Kavya Traders सापडलं, कारण LIKE English अक्षरांसाठी capital आणि small मधला फरक बघत नाही.
उदाहरण 2 · dataset: swiftship_logistics
SELECT raw_name,
raw_name LIKE '%ÉLODIE%' AS match_capital_e,
raw_name LIKE '%élodie%' AS match_same_e
FROM agents
WHERE agent_id = 5;Output
| raw_name | match_capital_e | match_same_e |
|---|---|---|
| élodie martin | 0 | 1 |
Meaning. Capital É वाला pattern 0 देतो, म्हणजे जुळत नाही. तसाच small é 1 देतो. अशी नावं शोधण्याआधी स्वच्छ किंवा एकसारखी करा.
उदाहरण 3 · dataset: swiftship_logistics
SELECT tracking_code,
instr(tracking_code, '-') AS first_dash,
instr(tracking_code, 'Z') AS position_of_z
FROM shipments
WHERE shipment_id IN (1001, 1004);Output
| tracking_code | first_dash | position_of_z |
|---|---|---|
| PNQ-01-00017 | 4 | 0 |
| DXB-01-00009 | 4 | 0 |
Meaning. दोन्ही codes मध्ये पहिला dash 4 थं अक्षर आहे. कुठल्याच code मध्ये Z नाही, म्हणून instr() 0 देतं.
Ravindra Bagale's Tip
To find text that does not contain a word, use NOT LIKE. Rows where the column is NULL are not returned by LIKE or NOT LIKE, so check them separately with IS NULL.
Ravindra Bagale's Tip – मराठी
एखादा शब्द नसलेला text शोधायला NOT LIKE वापरा. Column NULL असलेले rows LIKE किंवा NOT LIKE दोन्हीतून येत नाहीत, म्हणून ते IS NULL ने वेगळे तपासा.
Ravindra Bagale's Tip – हिंदी
कोई शब्द न होने वाला text ढूँढने के लिए NOT LIKE लगाइए। जिन rows में column NULL है वे LIKE या NOT LIKE दोनों में नहीं आते, इसलिए उन्हें IS NULL से अलग जाँचिए।