【问题标题】:Percentage sign (%) in an INSERTINSERT 中的百分号 (%)
【发布时间】:2012-02-17 09:09:25
【问题描述】:

我必须将值更改到我的数据库中。其中一个字符串值可以包含% 符号。

粗略的例子:

UPDATE Mortgage 
SET TEXT = 'The interest rate is 7%';

更改未保存在数据库中。如何在 SQL Server 中转义百分比符号

【问题讨论】:

  • 如何与数据库交互?使用 IDE/客户端或自行编写的软件?
  • 这是正常的 SQL Server 查询。它应该可以正常工作。
  • @RB.,上面的问题是关于在LIKE操作符中转义%...
  • 如果你真的在使用SQL Server,你不需要引用%符号!

标签: sql sql-server escaping


【解决方案1】:
UPDATE Mortgage SET TEXT = 'The interest rate is 7' + CHAR(37);

37 是百分号的小数 ASCII code

【讨论】:

    【解决方案2】:

    您可以使用自定义转义字符,例如:

    UPDATE Mortgage 
    SET TEXT = 'The interest rate is 7\%' ESCAPE '\';
    

    但我认为你不需要在这里转义这个字符%,因为它作为输入值没有特殊含义,但是你必须转义它以防你想在LIKE查询中使用它。

    【讨论】:

    • 我在这里期待你的回答 :)
    • 运行您的代码时出现错误,“关键字'ESCAPE'附近的语法不正确。” (如果我从ESCAPE inclusive 这个词中注释掉,那么它会执行但显然会添加一个不需要的``)
    【解决方案3】:

    你试过用“\”转义字符吗?

    UPDATE Mortgage 
    SET TEXT = 'The interest rate is 7\%';
    

    【讨论】:

    • 这只是用值'The interest rate is 7\%' 更新列——这有什么帮助?
    • 将转义字符设置为'\'
    • 没有SET..ESCAPE 语法!
    • 没必要,下次祝你好运——我只是对你的几个好答案投了赞成票:)
    【解决方案4】:

    你的架构是什么?

    我试过了,它有效(SQL-Server 2008 R2 和 SSMS):

    CREATE TABLE [dbo].[Mortgage](
        [TEXT] [varchar](500) NOT NULL
    ) ON [PRIMARY]
    insert Mortgage (TEXT) values ('The interest rate is 7%');
    SELECT TEXT FROM Mortgage;
    
    UPDATE Mortgage SET TEXT = 'The new interest rate is 3%';
    SELECT TEXT FROM Mortgage;
    

    【讨论】:

      【解决方案5】:

      尝试将 % 加倍:%%

      UPDATE Mortgage 
      SET TEXT = 'The interest rate is 7%%';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-15
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        • 2020-08-16
        • 2012-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多