Сначала создайте эту функцию
create function [dbo].[fnSplitString]
(
@string nvarchar(max)
,@delimiter char(1) = ','
)
returns @t table(string nvarchar(max))
as
begin
declare @pos int
declare @piece varchar(500)
if right(rtrim(@string),1) <> @delimiter
set @string = @string + @delimiter
set @pos = patindex('%' + @delimiter + '%' , @string)
while @pos <> 0
begin
set @piece = left(@string, @pos - 1)
insert @t
select @piece
set @string = stuff(@string, 1, @pos,'')
set @pos = patindex('%' + @delimiter + '%' , @string)
end
return
end
Затем запустите этот
DECLARE @result TABLE (id Int,name Varchar(50),isactive Bit, subjectCode Varchar(200))
INSERT INTO @result
SELECT 1 , 'Shilpa' , 1 , '1,2,3'
INSERT INTO @result
SELECT 2 , 'Manasi' , 1 , '11'
INSERT INTO @result
SELECT 3 , 'kamal', 1 , '12,3'
INSERT INTO @result
SELECT 4 , 'Hans' , 0 , '1,2'
INSERT INTO @result
SELECT 5 , 'Rupali' , 1 , '1,11,12'
SELECT * FROM @result WHERE isactive=1 AND
(11 IN(SELECT * FROM [dbo].[fnSplitString](subjectCode,','))
OR 12 in
(SELECT * FROM [dbo].[fnSplitString](subjectCode,',')))
Нормализация. Пожалуйста, сделайте это. –
Мое решение ниже работает для вас? Он должен быть подходящим даже для большого количества записей. Однако, как отметил Митч, нормализация была бы идеальным способом. – Mez
Рассмотрите возможность выбора ответа из списка ответов, которые вы получили ниже @Jui Test ... – Mez