2011-08-08 8 views
8

यदि परिणाम "[email protected]" और मैं @ प्रतीक (3) की स्थिति खोजना चाहता हूं। क्या यह संभव है? ऐसा नहीं लगता है कि SQLite के पास INSTR, LOCATE, POSITION या ऐसे किसी भी फ़ंक्शन के बराबर है।मैं SQLite कॉलम में किसी वर्ण की स्थिति कैसे ढूंढूं?

SELECT ?('[email protected]') 

अद्यतन मैं एक कस्टम विस्तार समारोह पंजीकरण के समाप्त हो गया है, लेकिन आश्चर्य है कि मैं करने के लिए किया था।

+1

क्या आप अपना समाधान – Odys

उत्तर

-1
SELECT 
    email, 
    POSITION('@' IN email) 
From 
    table 

यहाँ एक बुनियादी संसाधन है आपको पसंद आ सकते: http://sqlzoo.net/howto/source/z.dir/tip238311/sqlite

+0

हाय कुरु, कुरु साझा कर सकते हैं। मैं एक कस्टम एक्सटेंशन का निर्माण समाप्त हो गया, लेकिन मेरे SQLite के निर्माण पर स्थिति उपलब्ध नहीं है। क्या यह आपके काम पर है? – tofutim

+0

संभावित एसक्यूएल वाक्यविन्यास त्रुटि: ईमेल से चुनें, स्थिति ('[' ईमेल में) तालिका से [निकट "तालिका": वाक्यविन्यास त्रुटि] अपवाद का नाम: NS_ERROR_FAILURE – tofutim

+1

मैं वर्ग में बड़ा नहीं हूं, लेकिन मुझे लगता है कि वर्ग ब्रैकेट आपको परेशानी दे रहा है क्योंकि (मुझे लगता है) sqllite उन विशेष पात्रों के रूप में व्यवहार करता है। सिंगल कोट्स के बजाए इसके चारों ओर डबल कोट्स आज़माएं - शायद यह ऐसा करेगा। – Chains

-7

चार की स्थिति '@' समारोह CHARINDEX (MSSQL) द्वारा finded जा सकता है:

SELECT CHARINDEX('@', '[email protected]', 0) 
+3

मेरी इच्छा है कि लोग उत्तर देने से पहले प्रश्न पढ़ लेंगे, CHARINDEX को SQLITE में लागू नहीं किया गया है !! – ilomambo

0

उपयोग charindex('c', column, 0)

यह SQLite के संस्करण पर निर्भर करता है।

+0

यह एसक्यूएल सर्वर फ़ंक्शन है, एसकलाइट –

2

a spiceworks posting से समझे:

The first step is to remove all characters up to a specific character using ltrim or rtrim. If you're retrieving a filename then you trim all characters that are not slashes. If you're retrieving a username then you trim everything that is not an @ character. You can then use that trimmed string in a replace function to replace its occurrence with an empty string. That will provide you with every character that you just trimmed in the first step. In other words, the username or filename.

create table example (path varchar(256), email varchar(128)); 

insert into example values ('/path/to/file1.txt', '[email protected]'); 

Retrieve user from email:

select replace(email, ltrim(email, '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM!#$%^&*()_+-=`~[]\/{}|;:,.<>?'),'') from example; 
2

आप here देख सकते हैं, CHARINDEX SQLite मानक पैकेज में (कम से कम 3.6.2 संस्करण में है कि मैं का उपयोग करें) नहीं है । लेकिन this एक्सटेंशन (एक्सटेंशन-functions.c) में Charindex है, जो मूल रूप से वीबी instr के समान है।

SQLite के लिए इन कार्यों को जोड़ने के लिए:

हम SQLite विस्तार बनाने के लिए सी स्रोत कोड संकलन करने के लिए है (यह मानते हुए आप Windows पर हैं):

  • स्थापित mingw संकलक, छोटे और करने में आसान। उसी फ़ोल्डर में

  • प्रतिलिपि sqlite3.h

  • जीसीसी -fPIC -lm कमरा साझा एक्सटेंशन-functions.c -ओ libsqlitefunctions.dll

  • fireup SQLite

  • चयन load_extension ('libsqlitefunctions.dll')

अन्य स्ट्रिंग और गणित कार्य भी हैं।

+0

नहीं, मुझे उस फ़ोल्डर में sqlite3ext.h की प्रतिलिपि भी लेनी है जिसे मैं [एक्सटेंशन-functions.c] संकलित कर रहा था (http://www.sqlite.org/contrib/download/extension -functions.c? get = 25) cygwin x64 स्थापना से gcc-4.8.3 के साथ सफलतापूर्वक संकलित। धन्यवाद! –

10

एक पथ से फ़ाइल नाम प्राप्त करें: http://community.spiceworks.com/topic/38836-sqlite-question-how-do-i-find-the-position-of-a-character-in-a-string?page=2 से

select replace(path, rtrim(path, replace(path, '/', '')), '') from example; 

गॉट, आशा है कि यह किसी की मदद कर सकते हैं।

+0

यह एक साफ चाल है कि संस्करण 3.7.15 में 'instr' फ़ंक्शन के बिना इसे कैसे किया जाए। – Fenikso

+0

स्मार्ट वैकल्पिक तरीका – Plugie

6

पता नहीं है कि यह एक हालिया जोड़ा है, लेकिन INSTR function वास्तव में पहला उदाहरण मिलेगा।

+2

3.7.15 में जोड़ा गया था जो प्रश्न पोस्ट किए जाने के बाद जारी किया गया था। http://www.sqlite.org/changes.html#version_3_7_15 – laalto

+0

सहमत हैं: फिर भी, वर्तमान में यह उन लोगों के लिए सही उत्तर है जिन्होंने गुगल किया है, है ना? – mediaczar

+1

हाँ, यह है। जैसा कि मेरे लिए था जो खोज से यहां पहुंचे –

संबंधित मुद्दे