2010-10-31 45 views
0

這裏的人一個非常簡單的問題:)SQL Server 2005中 - 附近有語法錯誤「/」

試圖更新以下內容的SQL列:

UPDATE [NameOfTable] 
SET [HtmlContent] = 'a href="/sell-your-boat/"' 
WHERE HtmlID = 123456 

,但我得到以下錯誤消息:'/'附近的語法不正確。

我知道這是因爲我需要逃避/角色,但我的頭撞牆試圖找到答案,因爲我知道這可能很簡單!

謝謝

+0

斜槓是不是在SQL – 2010-10-31 22:12:44

+0

爲什麼特殊字符那麼當我嘗試更新包含/?的列時出現此錯誤。謝謝 – timothyclifford 2010-10-31 22:15:02

+0

列的類型是什麼? – steinar 2010-10-31 22:19:13

回答

1

你不需要逃避斜線在SQL字符串。唯一需要轉義的字符是撇號(')。

您顯示的查詢沒有任何問題,所以唯一的解釋是您實際運行的代碼看起來不像那樣。

它沒有意義的周圍有一個href屬性HTML編碼引號,所以我的猜測是,HTML代碼實際上看起來是這樣的:

<a href='/sell-your-boat/'> 

文本中的任何撇號將有當您將其放入SQL代碼中的字符串文字中時,將被編碼爲雙撇號。

我不知道從哪裏執行查詢,但如果可能的話,參數化的查詢將是可取的,因爲您不必自己轉義文本,只需將文本分配給屬性值即可。

+0

是的,我的壞。在我正在複製和粘貼時,我試圖插入字符串中的一個撇號,然後掠過它。用雙撇號替代它,BINGO全部綠色。謝謝大家 :) – timothyclifford 2010-10-31 22:37:16

1

像上面所有的評論,你幾乎不需要躲避/

我只是做了在SQL Server 2005中快速SQL測試,並沒有得到一個錯誤信息(見下文) 我們可能需要比您提供的信息更多的信息。你在Management Studio中運行這個,或者是這個SQL被稱爲在.NET應用程序,等等。

create table test (htmlid int, htmlcontent varchar(516)) 

insert into test select 123456 as htmlid, 'test' as htmlcontent 


update test 
set htmlcontent = 'a href=&quot;/sell-your-boat/&quot;' 
where htmlid = 123456 

select * from test where htmlid = 123456 

drop table test 

我的輸出

123456 a href=&quot;/sell-your-boat/&quot;