2012-03-28 4 views
16

LIKE स्थिति हमें SQL कथन के खंड में वाइल्डकार्ड का उपयोग करने की अनुमति देती है। यह हमें पैटर्न मिलान करने की अनुमति देता है। LIKE स्थिति किसी भी वैध SQL कथन में उपयोग की जा सकती है - चुनें, डालें, अपडेट करें या हटाएं। इसक्या कैसंड्रा के लिए एसक्यूएल के समान कोई प्रश्न है: LIKE Condition?

SELECT * FROM users 
WHERE user_name like 'babu%'; 

उपर्युक्त ऑपरेशन की तरह ही कोई प्रश्न सीएलआई में कैसंड्रा के लिए उपलब्ध है।

+0

sdolgy सही है। वैकल्पिक रूप से, सोलैंड्रा या डीएसई जैसे कुछ देखें। – phact

उत्तर

11

सरल जवाब:

http://www.datastax.com/docs/0.8/references/cql#cql-reference

आप पंक्तियों का एक और सेट बनाए रखते हैं: वहाँ का कोई समकक्ष की तरह

http://www.datastax.com/docs/0.8/dml/using_cql

यहाँ है v0.8 के लिए आदेश संदर्भ है जो उपयोगकर्ता नाम के संदर्भ रखता है:

पंक्ति : उपयोगकर्ता नाम: bab -> col: babu1, col: babar पंक्ति: उपयोगकर्ता नाम: babu -> col: babur

प्रभावी रूप से आप उन सभी परिणामों को पूर्व-पॉप्युलेट करके धोखा दे रहे हैं जिन्हें आप आम तौर पर आरडीबीएमएस दुनिया में खोजते हैं । भंडारण साल पहले की तुलना में सस्ता है ... यही कारण है कि यह अब एक स्वीकार्य दृष्टिकोण है। जानकारी की पूर्व-जनसंख्या सूची को पुनर्प्राप्त करने के लिए सीपीयू और मेमोरी पर यह कम गहन है।

+2

मैं इस उत्तर को स्वीकार के रूप में चिह्नित नहीं करूंगा। दरअसल, यदि आप जिस कॉलम को फ़िल्टर कर रहे हैं, वह क्लर्किंग कुंजी है: उपयोगकर्ताओं से चुनें जहां उपयोगकर्ता_नाम <= 'babu' और user_name> 'babv'; @ फिलिपब्लम का जवाब – Yahor

11

मुझे पता है: यह एक पुराने सवाल है लेकिन वहाँ इस विषय के लिए एक समाधान है:

आप कैसेंड्रा में ऑपरेटर की तरह उपयोग नहीं कर सकते, लेकिन आप रेंज ऑपरेटरों का उपयोग कर सकते हैं और सीमा ऑपरेटर के साथ आप इस "की तरह हल कर सकते हैं 'जो भी%' '

एक उदाहरण: मेरे पास एक से अधिक उत्पाद हैं।

INSERT INTO user(productId, username) VALUES (1, 'anna'); 
INSERT INTO user(productId, username) VALUES (1, 'alpha'); 
INSERT INTO user(productId, username) VALUES (1, 'andreas'); 
INSERT INTO user(productId, username) VALUES (1, 'alex'); 
INSERT INTO user(productId, username) VALUES (1, 'bernd'); 
INSERT INTO user(productId, username) VALUES (1, 'bob'); 

अब, मैं जिस पर एक एक है सभी उपयोगकर्ताओं को खोजने के लिए चाहते हैं:

CREATE TABLE user(productId int, username text, PRIMARY KEY(productId, username)); 

अब मैं कुछ उपयोगकर्ताओं है: प्रत्येक उत्पाद अपने ही विभाजन कुंजी (प्राथमिक कुंजी के पहले भाग) है इसकी शुरुआत हुई। किसी SQL दुनिया में मैं कैसेंड्रा में 'एक%' की तरह का उपयोग मैं इस का उपयोग करें:

SELECT * FROM user WHERE productId = 1 AND username > 'a' AND username < 'b'; 

परिणाम:

productid | username 
-----------+---------- 
    1 |  alex 
    1 | alpha 
    1 | andreas 
    1 |  anna 
+1

देखें लेकिन इस समाधान का उपयोग लंबे तारों के लिए नहीं किया जा सकता –

+0

@Mayerz कितना लंबा? –

+0

जैसे कि मैं शब्दों के लिए queru करना चाहता हूँ, मुझे यह कैसे करना चाहिए? मुझे लगता है कि यह समाधान सही नहीं है? –

13

कैसेंड्रा 3.4 (3.5 की सिफारिश की), प्रश्नों की तरह एक SSTable का प्रयोग कर प्राप्त किया जा सकता है के बाद से संलग्न माध्यमिक सूचकांक (एसएएसआई)।

उदाहरण के लिए:

CREATE TABLE cycling.cyclist_name ( 
    id UUID PRIMARY KEY, 
    lastname text, 
    firstname text 
); 

इस प्रकार SASI बनाना:

CREATE CUSTOM INDEX fn_prefix ON cyclist_name (firstname) 
USING 'org.apache.cassandra.index.sasi.SASIIndex'; 

फिर क्वेरी की तरह एक उपसर्ग काम कर रहा है:

SELECT * FROM cyclist_name WHERE firstname LIKE 'M%'; 
SELECT * FROM cyclist_name WHERE firstname LIKE 'Mic%'; 

इन उदाहरणों और अधिक कॉन्फ़िगरेशन विकल्प, जैसे प्रत्यय प्रश्न, documentation

में पाया जा सकता है

एसएएसआई कार्यों के बारे में गहराई से स्पष्टीकरण में here पाया जा सकता है।

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