Учитывая SQL Server 2008, я написал простую функцию поиска в строке следующим образом:
ALTER FUNCTION [dbo].[FindInString]
(
@FindText VARCHAR(255),
@TextSource VARCHAR(512)
)
RETURNS INT
AS
BEGIN
DECLARE @Result INT
SET @Result = 0
SELECT @Result = CHARINDEX(@FindText, @TextSource)
RETURN @Result
END
Сложность функции find может измениться в будущем, поэтому я хотел инкапсулировать ее в функцию.
Теперь, когда у меня есть только одна совпадающая запись в таблице, это работает:
SELECT @FindCount = dbo.FindInString('somestring', (SELECT TableSearch FROM Segments WHERE CID=22793))
Однако, когда оператор выбора возвращает более одного, имеет смысл выяснить, почему выдается ошибка.
хотелось бы знать, что мне нужно сделать, чтобы эта работа была простым вызовом, как указано выше?
Мне нужно только знать, есть ли одно совпадение (мне просто нужно знать, если @FindCount> 0), и я предполагаю, что может потребоваться какой-то цикл, но хотелось бы сделать это как можно более простым .
Спасибо.