Ravindra BagaleCourses & study guides Track your progress

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 शोधा.

पायऱ्या

  1. पहिलं उदाहरण run करा आणि capital TRADERS ने सुद्धा Kavya Traders सापडतो ते बघा.
  2. दुसरं उदाहरण run करा: 1 म्हणजे true आणि 0 म्हणजे false.
  3. तिसरं उदाहरण run करा आणि dash ची जागा आणि नसलेल्या अक्षरासाठी 0 वाचा.
  4. सुरुवातीला % असलेल्या 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_namematch_capital_ematch_same_e
élodie martin01

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_codefirst_dashposition_of_z
PNQ-01-0001740
DXB-01-0000940

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.