Разбить строку и перейти с динамическим кодированием
DECLARE @QRY VARCHAR(MAX), @DIVISIONS VARCHAR(MAX)='The Example Company INC';
DECLARE @START INT=1, @END INT=LEN(@DIVISIONS)
, @LIKE VARCHAR(MAX)='CompanyName LIKE ''%';
WHILE (@START<[email protected])
BEGIN
SELECT @LIKE [email protected]+ CASE ASCII(SUBSTRING(@DIVISIONS, @START, 1))
WHEN 32
THEN '%'' OR CompanyName LIKE ''%'
ELSE SUBSTRING(@DIVISIONS, @START, 1)
END
SET @START+=1
END
SET @LIKE = @LIKE+'%'''
SELECT @QRY = ' SELECT CompanyName FROM COMPANY
WHERE ' + @LIKE
PRINT @QRY
EXEC(@QRY)
Другой простой способ динамического запроса:
DECLARE @QRY VARCHAR(MAX), @DIVISIONS VARCHAR(MAX)='The Example Company INC'
,@LIKE VARCHAR(MAX)='CompanyName LIKE ''%';
DECLARE @END INT=LEN(@DIVISIONS)
select @LIKE = @LIKE+ CASE ASCII(SUBSTRING(@DIVISIONS, number, 1))
WHEN 32
THEN '%'' OR CompanyName LIKE ''%'
ELSE SUBSTRING(@DIVISIONS, number, 1)
END
FROM master.dbo.spt_values
where type='p' and number between 1 and @END
SET @LIKE = @LIKE+'%'''
SELECT @QRY = ' SELECT CompanyName FROM COMPANY
WHERE ' + @LIKE
PRINT @QRY
EXEC(@QRY)
Вы можете проверьте, как это: 'SELECT CompanyName FROM COMPAY WHERE CompanyName LIKE '% Пример компании%'' – Aruna
неверно, ваше имя таблицы, я думаю, это sh ould быть КОМПАНИЕЙ. – Abbas
, пожалуйста, проверьте название своей таблицы, и вы должны удалить предложение INC from Where. –