Sık sık bu gereksinimi ve SOMETIME var, [size boyut/biçim/uzunluk] üzerinde aradığınız sütunu çok iyi biliyorsanız, bir çeşit REGEX yapabilirsiniz. Böyle
şey:
DECLARE @MyListOfLocation varchar(255)
set @MyListOfLocation = '|1|32|36|24|3|'
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%'
NOT: BORU karakteri (örneğin, '1') tek bir karakter içeren herhangi LocationID döndürmesini sorguyu korumak için kullanılır.
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 + '|%'
UYARI:
İşte tam çalışma örnektir! Bu yöntem Dizin dostu değil! Eğer kaldıraç, tüm bu içinde İNDEKSLER kullanımını bazı IN (@MyListOfLocation) eklerim istiyorsanız, sizin komut dosyasını
yapmalı:
SELECT MyDATA.*
FROM HugeTableWithAnIndexOnLocationID as MyDATA
WHERE LocationID in (
Select LocationID
from Table
where @MyListOfLocation like '%|' + LocationID + '|%')
[SQL Server SP
olası yinelenen - parametresini geçirin "IN" dizi listesi için?] (http://stackoverflow.com/questions/537087/sql-server-sp-pass-parameter-for-in-array-list) – Lamak
Bir [Tablo Değeri Parametresi kullanmayı düşündünüz mü? ] (http://msdn.microsoft.com/en-us/library/bb510489.aspx) yerine. Bunu yapar. 'Bulunduğunuz yerdeki Tablolar'ı seçin. (Konumdan @LocationList'den Konum Seçiniz) –