我有一個在Dynamic SQl中爲我的應用程序編碼的Proc。它正在使用以他們的姓氏搜索申請人。現在它正在用申請人的姓氏的前兩位數字或全名進行搜索。但是,我有一個問題,搜索他們的姓氏撇號申請人(例如奧康納)。如果客戶嘗試使用O'或O'Connor搜索申請人,則會發生錯誤。他們希望以姓氏搜索每個申請人有或沒有撇號。請幫助我嘗試了一切,但它不工作。下面是使用在proc拉申請我的搜索代碼:撇號的問題
添加通配符如果有必要
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
現在建立dinamically輸入過濾器底板參數
if Rtrim(@LastName) <> ''
select @Where = @Where + ' and a.LastName like '+ Rtrim(@LastName)
我收到下面的錯誤,當我執行Proc。我從Proc打印選擇語句 - 因爲限制 - 我不能在這裏陳述整個語句 - 下面是它打印的姓氏,如: 服務器:消息170,級別15,狀態1,行1 行1 :'O'附近的語法錯誤。 和a.LastName像''O''REILLY%'' – user203671 2009-11-07 14:48:02
你用兩個撇號替換一個撇號嗎?看起來你用雙引號取代它 - 這是不對的 – Murph 2009-11-07 15:23:50
所以,這裏我得到了什麼,當我打印當前代碼與出去添加代碼,你給我.. 服務器:消息170,級別15,狀態1,第1行 第1行:'REILLY'附近語法不正確。 服務器:消息105,級別15,狀態1,行1 未在字符串「'前面加上引號。 和a.LastName like'O'REILLY%' – user203671 2009-11-07 18:02:49