दिलचस्प पोस्ट
ORA-00979 अभिव्यक्ति द्वारा एक समूह नहीं है जावास्क्रिप्ट में json-object की कुंजी प्राप्त करें Android में सो थैड या प्रक्रिया को कैसे रोकें? पीडीओ सीमित और ऑफसेट कैसे Firebase डेटा संशोधन को प्रतिबंधित करने के लिए? अंत में डॉट के साथ URL पर HttpWebRequest एक आईओएस ऐप में फेसबुक प्रमाणीकरण के लिए डिजाइन जो एक सुरक्षित वेब सेवा तक पहुंचता है कर्ल में मल्टीपार्ट / फॉर्म-डेटा के रूप में कच्चे छवि डेटा पोस्ट करना libsvm प्रारूप में डेटा को पढ़ने / लिखना एक एआर पुस्तकालय का प्रयोग करें ग्रिड 4.x में एपीआई का इस्तेमाल करने वाली निर्भरताएं लापता क्या मुझे पर्ल रेगेक्स में अंकों का मिलान करने के लिए \ d या का उपयोग करना चाहिए? कुडा परमाणु परिवर्तन झंडा नकल के साथ नुकीले सरणी असाइनमेंट app.config फ़ाइल से पढ़ना कैसे सी + + कोड को समाप्त करने के लिए

एसक्यूएल की तरह और एक साथ में उपयोग करना

क्या एक तरह से और साथ में उपयोग करने का एक तरीका है?

मैं इस तरह से कुछ हासिल करना चाहता हूं।

SELECT * FROM tablename WHERE column IN ('M510%', 'M615%', 'M515%', 'M612%'); 

तो मूल रूप से मैं अलग-अलग स्ट्रिंग्स के एक समूह के साथ कॉलम से मिलान करने में सक्षम होना चाहता हूं। क्या यह एक क्वेरी के साथ करने का एक और तरीका है या मुझे उस तार की सरणी के ऊपर लूप होना चाहिए जो मैं खोज रहा / रही हूं?

Solutions Collecting From Web of "एसक्यूएल की तरह और एक साथ में उपयोग करना"

आप ओआरएस के साथ एक-दूसरे के साथ मिलकर एक क्वेरी में इसे कर सकते हैं:

 SELECT * FROM tablename WHERE column LIKE 'M510%' OR column LIKE 'M615%' OR column LIKE 'M515%' OR column LIKE 'M612%'; 

बस इस बात से अवगत रहें कि जैसे चीजें और प्रति पंक्ति कार्य हमेशा उस अच्छी तरह से स्केल नहीं करते हैं यदि आपकी तालिका बड़ी बढ़ने की संभावना है, तो आप क्षेत्र के पहले चार अक्षर को स्वतंत्र रूप से स्टोर करने के लिए अपनी तालिका में एक और कॉलम जोड़ने पर विचार कर सकते हैं।

यह डेटा डुप्लिकेट करता है लेकिन आप गारंटी दे सकते हैं कि यह डालने और अपडेट ट्रिगर्स का उपयोग करके संगत रहती है। फिर उस नए कॉलम पर एक इंडेक्स डालें और आपकी क्वेरी बनें:

 SELECT * FROM tablename WHERE newcolumn IN ('M510','M615','M515','M612'); 

यह गणना की लागत को उस बिंदु पर ले जाता है जहां यह आवश्यक है (जब डेटा बदलता है), हर बार जब आप इसे पढ़ते हैं वास्तव में, आप आगे भी जा सकते हैं और अपने नए कॉलम को बूलियन के रूप में दिखा सकते हैं कि यह चार विशेष प्रकारों में से एक है (यदि विशेष समूह उसमें कभी-कभी बदल जाएगा)। फिर क्वेरी एक और तेजी से होगी:

 SELECT * FROM tablename WHERE is_special = 1; 

गति के लिए भंडारण की आवश्यकता का यह नियंत्रण बड़ी डेटाबेस के लिए एक उपयोगी चाल है – आम तौर पर डिस्क स्थान सस्ता है, सीपीयू कर्कश बहुमूल्य है, और लिखित में कहीं अधिक डेटा पढ़ा जाता है। लेखन स्टेज पर गणना की लागत को स्थानांतरित करके, आप सभी पढ़ते समय लागत को परिशोधित करते हैं।

कैसे के साथ एक substring का उपयोग कर के बारे में

 select * from tablename where substring(column,1,4) IN ('M510','M615','M515','M612') 

आपको कई LIKE शर्तों का उपयोग करने की आवश्यकता होगी, OR जुड़े हुए हैं I

IN के लंबे संस्करण का उपयोग करें जो कि OR का एक गुच्छा है

 SELECT * FROM tablename WHERE column LIKE 'M510%' OR column LIKE 'M615%' OR column LIKE 'M515%' OR column LIKE 'M612%'; 
 substr([column name], [desired starting position (numeric)], [# characters to include (numeric)]) in ([complete as usual]) 

उदाहरण

 substr([column name],1,4) in ('M510','M615', 'M515', 'M612') 
 SELECT * FROM tablename WHERE column IN (select column from tablename where column like 'M510%' or column like 'M615%' OR column like 'M515%' or column like'M612%' ) 

मैंने एक और तरीका कोशिश की

कहें तालिका में मूल्य हैं

 1 M510 2 M615 3 M515 4 M612 5 M510MM 6 M615NN 7 M515OO 8 M612PP 9 A 10 B 11 C 12 D 

यहां 1 से 8 के कोल्स वैध हैं, जबकि बाकी सभी अमान्य हैं I

 SELECT COL_VAL FROM SO_LIKE_TABLE SLT WHERE (SELECT DECODE(SUM(CASE WHEN INSTR(SLT.COL_VAL, COLUMN_VALUE) > 0 THEN 1 ELSE 0 END), 0, 'FALSE', 'TRUE') FROM TABLE(SYS.DBMS_DEBUG_VC2COLl('M510', 'M615', 'M515', 'M612'))) = 'TRUE' 

मैंने जो कुछ किया है वह INSTR फ़ंक्शन का उपयोग कर रहा है, मैंने इसे खोजने की कोशिश की है कि इनपुट के रूप में किसी भी मूल्य के साथ तालिका मैचों का मान है। यदि ऐसा होता है, तो वह इसका सूचकांक वापस कर देगा, अर्थात शून्य से अधिक। यदि तालिका का मूल्य किसी भी इनपुट से मेल नहीं खाता है, तो यह शून्य वापस करेगा। सफल सूचकांक को इंगित करने के लिए मैंने यह सूचकांक जोड़ा है।

लगता है यह काम कर रहा है।

आशा करता हूँ की ये काम करेगा।

आप वाइल्डकार्ड के साथ उप-क्वेरी का उपयोग कर सकते हैं:

  SELECT 'Valid Expression' WHERE 'Source Column' LIKE (SELECT '%Column' --FROM TABLE) 

या आप एक एकल स्ट्रिंग का उपयोग कर सकते हैं:

  SELECT 'Valid Expression' WHERE 'Source Column' LIKE ('%Source%' + '%Column%') 

आप यह भी कोशिश कर सकते हैं

समारोह

 CREATE FUNCTION [dbo].[fn_Split](@text varchar(8000), @delimiter varchar(20)) RETURNS @Strings TABLE ( position int IDENTITY PRIMARY KEY, value varchar(8000) ) AS BEGIN DECLARE @index int SET @index = -1 WHILE (LEN(@text) > 0) BEGIN SET @index = CHARINDEX(@delimiter , @text) IF (@index = 0) AND (LEN(@text) > 0) BEGIN INSERT INTO @Strings VALUES (@text) BREAK END IF (@index > 1) BEGIN INSERT INTO @Strings VALUES (LEFT(@text, @index - 1)) SET @text = RIGHT(@text, (LEN(@text) - @index)) END ELSE SET @text = RIGHT(@text, (LEN(@text) - @index)) END RETURN END 

सवाल

 select * from my_table inner join (select value from fn_split('M510', 'M615', 'M515', 'M612',',')) as split_table on my_table.column_name like '%'+split_table.value+'%'; 

एक पूरी तरह से गतिशील समाधान के लिए, यह कर्सर और एक अस्थायी तालिका के संयोजन से प्राप्त किया जा सकता है। इस समाधान के साथ आपको आरंभिक स्थिति और लम्बाई को जानने की आवश्यकता नहीं है, और यह आपके एसक्यूएल क्वेरी में किसी भी OR को जोड़ने के बिना विस्तार योग्य है।

इस उदाहरण के लिए, मान लीजिए कि आप उस तालिका से आईडी, विवरण और निर्माण तिथि का चयन करना चाहते हैं जहां पाठ की एक निश्चित सूची 'विवरण' के अंदर है

पहले सर्च के नाम से एक कॉलम में खोज स्ट्रिंग के साथ एक तालिका फ़िल्टरटैबल बनाएं।

प्रश्न स्टार्टर ने अनुरोध किया:

 insert into [DATABASE].dbo.FilterTable select 'M510' union select 'M615' union select 'M515' union select 'M612' 

उसके बाद आप अपना डेटा निम्न के रूप में फ़िल्टर कर सकते हैं:

 DECLARE @DATA NVARCHAR(MAX) CREATE TABLE #Result (ID uniqueIdentifier, Details nvarchar(MAX), Created datetime) DECLARE DataCursor CURSOR local forward_only FOR SELECT '%' + Search + '%' FROM [DATABASE].dbo.FilterTable OPEN DataCursor FETCH NEXT FROM DataCursor INTO @DATA WHILE @@FETCH_STATUS = 0 BEGIN insert into #Result select ID, Details, Created from [DATABASE].dbo.Table (nolock) where Details like @DATA FETCH NEXT FROM DataCursor INTO @DATA END CLOSE DataCursor DEALLOCATE DataCursor select * from #Result drop table #Result 

उम्मीद है कि यह मदद मिलेगी