Как сравнить несколько параметров значения столбца строки? - PullRequest
0 голосов
/ 01 апреля 2012

как написать запрос для следующего запроса? мой стол:

id        designation
1         developer,tester,projectlead
1         developer
1         techlead

 if id=1,designation="'developer'"

Тогда надо первую, вторую записи. Потому что в 2 рядах есть венкат. если id=1,designation="'developer','techlead'", тогда нужно получить 3 записи в результате. я написал один сервис для вставки записей в эту таблицу. так что я поддерживаю одну таблицу для хранения всех обозначений с одним и тем же столбцом с запятыми.

Используя сервис, если пользователь передает id = 1 обозначение = "'разработчик', 'techlead'", тогда нужно извлечь 3 вышеуказанные записи. Так что я сохраняю только одну таблицу, чтобы сохранить все обозначения

SP:

ALTER PROCEDURE [dbo].[usp_GetDevices]
@id INT,
@designation NVARCHAR (MAX)
AS

BEGIN
declare @idsplat varchar(MAX)
set @idsplat = @UserIds
    create table #u1 (id1 varchar(MAX))
    set @idsplat = 'insert #u1 select ' + replace(@idsplat, ',', ' union select ')
    exec(@idsplat)
  Select 
    id FROM dbo.DevicesList WHERE id=@id  AND designation IN (select id1 from #u1)
  END

1 Ответ

3 голосов
/ 01 апреля 2012

Вам необходимо использовать логические операторы AND и OR в сочетании с LIKE:

IF empid = 1 AND (empname LIKE '%venkat%' OR empname LIKE '%vasu%')

В приведенном выше примере будут возвращены все строки с empid, равными 1 и empname, содержащими venkat или vasu.

Очевидно, что вам нужно создать этот запрос на основе ввода от пользователя, это всего лишь пример того, как должен выглядеть окончательный запрос.

Редактировать Попытка сделать это в SqlServer может быть довольно сложной, поэтому вам действительно следует изменить свой подход к вызову хранимой процедуры.Если вы не можете сделать это, вы можете попытаться разделить ваш параметр designation на , (ответы на этот вопрос показывают несколько способов, как это сделать) и вставить значения во временнуюТаблица.Затем вы можете JOIN на этой временной таблице с помощью LIKE, как описано в этой статье .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...