【问题标题】:SQL Server 2005 - Incorrect syntax near '/'SQL Server 2005 - '/' 附近的语法不正确
【发布时间】:2010-10-31 22:09:38
【问题描述】:

这是一个对某人来说非常简单的问题:)

尝试使用以下内容更新 SQL 列:

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

但我收到以下错误消息:'/' 附近的语法不正确。

我知道这是因为我需要转义 / 字符,但我的头撞到墙上试图找到答案,因为我知道这可能非常简单!

谢谢

【问题讨论】:

  • 斜杠不是 SQL 中的特殊字符
  • 那么为什么在尝试使用包含 / 的值更新列时出现此错误?谢谢
  • 列的类型是什么?
  • 你在SSMS运行这个吗?
  • 您在哪里输入查询?

标签: sql sql-server-2005 tsql


【解决方案1】:

您不需要在 SQL 中转义字符串中的斜杠。唯一需要转义的字符是撇号 (')。

您显示的查询没有任何问题,因此唯一的解释是您实际运行的代码看起来不像那样。

在 href 属性周围加上 HTML 编码的引号是没有意义的,所以我的猜测是 HTML 代码实际上看起来像这样:

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

当您将文本中的任何撇号放在 SQL 代码中的字符串文字中时,都必须将其编码为双撇号。

我不知道查询是从哪里执行的,但如果可能的话,最好使用参数化查询,因为这样您就不必自己转义文本,只需将文本分配给属性值。

【讨论】:

  • 是的,我的错。在我试图插入的字符串中有一个撇号,当我复制和粘贴时只是略过它。将其替换为双撇号和 BINGO 全绿色。谢谢大家:)
【解决方案2】:

和上面所有的 cmets 一样,你不需要转义 /

我刚刚在 sql server 2005 中做了一个快速的 sql 测试,并没有收到错误消息(见下文) 我们可能需要比您提供的信息更多的信息。您是在 Management Studio 中运行它,还是在 .NET 应用程序中调用这个 sql,等等...

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-29
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2017-07-15
    • 2019-02-04
    相关资源
    最近更新 更多