मैं इस तरह कॉलम युक्त तालिका है: abc qwe ax xyza
:एसक्यूएल का चयन करें जहां स्तंभ सभी सीमांकित तार है
Table: teeburu Columns: - aidi int identity - bariu varchar(8000)
मैं उदाहरण के लिए, एक संग्रहीत प्रक्रिया है जो अपने इनपुट एक स्ट्रिंग है करना चाहते हैं उपयोगकर्ता के इनपुट के लिए लंबाई और कितनी रिक्त स्थान मुक्त हैं।
तथा उसके द्वारा सभी पंक्तियों जो स्तंभ bariu
इन सभी की शामिल चयन करने के लिए है: abc
, qwe
, ax
, और xyza
यहाँ मैं क्या करने की कोशिश की है:
मैं विभाजन समारोह बनाने (this page से कॉपी)
create FUNCTION [dbo].[Split](@String varchar(8000), @Delimiter char(1))
returns @temptable
TABLE (nameIndex int identity(1,1),items varchar(8000))
as
begin
declare @idx int
declare
@slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String
is null return
while @idx!= 0
begin
set @idx =
charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx
- 1)
else
set @slice = @String
if(len(@slice)>0)
insert
into @temptable(Items) values(@slice)
set @String =
right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
इसके साथ में, मैं प्रबंधित सभी पंक्तियों जो स्तंभ bariu
कम से कम एक इनमें से होता है का चयन करने के कुछ लिखें: abc
, qwe
, ax
, और xyza
with list as(
select * from dbo.split(@Param,' ')
)
SELECT aidi, bariu FROM teeburu
INNER JOIN list
ON bariu like '%'+ list.items+ '%'
GROUP BY aidi, bariu
लेकिन मैं कैसे करना है को समझ नहीं सकता सभी के बजाय में से कम से कम एक। मेरा सवाल यह है कि यह कैसे करें?
मैं एमएस एसक्यूएल सर्वर का उपयोग कर रहा