मुझे अक्सर यह आवश्यकता होती है, और SOMETIME, यदि आप कॉलम [आकार/प्रारूप/लंबाई] पर खोज रहे कॉलम को बहुत अच्छी तरह से जानते हैं, तो आप एक प्रकार का रेगेक्स कर सकते हैं।
कुछ इस तरह:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|32|36|24|3|'
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%'
नोट: पाइप चरित्र (उदाहरण के लिए, '1') किसी भी LocationID है कि एक ही वर्ण है लौटने से क्वेरी की रक्षा के लिए प्रयोग किया जाता है।
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|11|21|'
SELECT LocationName
FROM (
select '1' as LocationID, 'My Location 1' as LocationName
union all
select '11' as LocationID, 'My Location 11' as LocationName
union all
select '12' as LocationID, 'My Location 12' as LocationName
union all
select '13' as LocationID, 'My Location 13' as LocationName
union all
select '21' as LocationID, 'My Location 21' as LocationName
) as MySub
where @MyListOfLocation like '%|' + LocationID + '|%'
चेतावनी:
यहां एक संपूर्ण काम कर उदाहरण है! यह विधि इंडेक्स अनुकूल नहीं है!
आप अनुक्रमित के उपयोग का लाभ उठाने के सब में से कुछ में (@MyListOfLocation) जोड़ूं, चाहते हैं, आप अपनी स्क्रिप्ट को संशोधित कर सकते करने के लिए:
SELECT MyDATA.*
FROM HugeTableWithAnIndexOnLocationID as MyDATA
WHERE LocationID in (
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%')
की [एसक्यूएल सर्वर सपा
संभव डुप्लिकेट - पैरामीटर दर्रा "IN" सरणी सूची के लिए?] (http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list) – Lamak
क्या आपने एक [टेबल-वैल्यू पैरामीटर का उपयोग करने पर विचार किया है ] (http://msdn.microsoft.com/en-us/library/bb510489.aspx) इसके बजाए। यह इसे तालिका से स्थान का चयन करेगा जहां स्थान आईडीआई (स्थानसूची से स्थान का चयन करें) ' –