SQL Server 2005 - неверный синтаксис рядом с '/' - PullRequest
0 голосов
/ 01 ноября 2010

Вот очень простой вопрос для кого-то:)

Попытка обновить столбец SQL следующим образом:

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

Но я получаю следующее сообщение об ошибке: Неверный синтаксис рядом с '/'.

Я знаю, что это потому, что мне нужно убежать от символа /, но удариться головой о стену, пытаясь найти ответ, потому что я знаю, что это, вероятно, очень просто!

Спасибо

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Как и все комментарии выше, вам не нужно избегать /

Я только что провел быстрый SQL-тест в SQL Server 2005 и не получил сообщение об ошибке (см. Ниже) Возможно, нам понадобится больше информации, чем вы предоставили. Вы запускаете это в 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="/sell-your-boat/"'
where htmlid = 123456

select * from test where htmlid = 123456

drop table test

мой вывод

123456  a href="/sell-your-boat/"
1 голос
/ 01 ноября 2010

Вам не нужно экранировать косую черту в строке в SQL. Единственный символ, который вам нужен, - это апостроф (').

В запросе, который вы показываете, нет ничего плохого, поэтому единственное объяснение состоит в том, что код, который вы на самом деле выполняете, выглядит не так.

Не имеет смысла заключать HTML-кодированные кавычки вокруг атрибута href, поэтому я предполагаю, что HTML-код на самом деле выглядит примерно так:

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

Любые апострофы в тексте должны быть закодированы как двойные апострофы, когда вы помещаете их в строковый литерал в коде SQL.

Я не знаю, откуда выполняется запрос, но параметризованный запрос будет предпочтительнее, если это возможно, так как тогда вам не нужно экранировать текст самостоятельно, вы просто назначаете текст значению свойства. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...