У меня есть Proc, который был закодирован в Dynamic SQl для одного из моих приложений. Он использует для поиска Заявителей с их фамилией. Сейчас он ищет заявителей либо с их первыми двумя цифрами своей фамилии, либо с полной фамилией. Но у меня проблема поиска кандидатов, у которых есть Apostrophe в их фамилии (пример O'Connor). Если клиент пытается найти заявителя с помощью O 'или O'Connor, он выдает ошибку. Они хотят искать каждого Заявителя с или без Апострофа в их фамилии. Помогите, я попробовал все, но не работает. Ниже мой поиск кода, используя в Proc вытащить заявителей:Проблема с Apostrophe
Добавить символы при необходимости
if Rtrim(@FirstName) <> ''
begin
If(Len(@FirstName) < 30) and (CharIndex('%', @FirstName) = 0) and @FirstName != ''
Set @FirstName = char(39) + @FirstName + '%' + char(39)
end
if Rtrim(@LastName) <> ''
begin
If(Len(@LastName) < 60) and (CharIndex('%', @LastName) = 0) and @LastName != ''
Set @LastName = Char(39) + @LastName + '%' + char(39)
end
Теперь построить динамически фильтр базы на входных параметров
if Rtrim(@LastName) <> ''
select @Where = @Where + ' and a.LastName like '+ Rtrim(@LastName)
Я получаю ниже Ошибка при выполнении Proc. Я печатаю инструкцию Select из Proc - я не могу поставить здесь весь текст из-за ограничения - ниже это то, что он печатает для фамилии, например: Сервер: Msg 170, уровень 15, состояние 1, строка 1 Строка 1 : Неправильный синтаксис около 'O'. и a.LastName like '' O''REILLY% '' – user203671
Вы заменяете один апостроф двумя апострофами? Похоже, вы заменяете его двойной цитатой - что не так. – Murph
Итак, вот что я получил, когда я печатаю текущий код без добавления кода, который вы мне дали. Сервер: Msg 170, Level 15, State 1, Строка 1 Строка 1: Неправильный синтаксис рядом с «REILLY». Сервер: Msg 105, уровень 15, состояние 1, строка 1 Незакрытая кавычка перед символьной строкой ''. и a.LastName наподобие 'O'REILLY%' – user203671