2012-02-17 198 views
3

我必须将值更改为我的数据库。其中一个字符串值可以包含%符号。INSERT中的百分比符号(%)

粗糙例如:

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

的变化不保存在数据库中。我如何逃避SQL Server中的百分比符号

+1

你如何与数据库交互?使用IDE /客户端还是自行编写的软件? – 2012-02-17 09:11:57

+8

这是正常的SQL Server查询。它应该正常工作。 – 2012-02-17 09:14:23

+0

[我如何在T-SQL中跳过百分比符号?]的可能重复(http://stackoverflow.com/questions/7191449/how-do-i-escape-a-percentage-sign-in-t-sql ) – 2012-02-17 09:16:18

回答

0

您是否尝试用“\”来转义字符?

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

这只是更新列的值''利率是7 \%'' - 这有什么帮助? – onedaywhen 2012-02-17 11:46:23

+0

将escape char设置为'\' – 2012-02-22 08:52:40

+1

没有'SET..ESCAPE'语法! – onedaywhen 2012-02-22 11:00:54

4
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 '\'; 

但我认为你没有必要逃离这里这个角色% becouse它没有任何特殊含义作为输入值,但你必须如果您想在LIKE查询中使用它,请将其转义。

+0

我期待你的答案在这里:) – 2012-02-17 09:19:04

+0

当我运行你的代码时出现错误,“关键字附近的语法错误''ESCAPE''。” (如果我从包含“ESCAPE”的单词中注释掉,它会执行,但显然会增加一个不需要的'\') – onedaywhen 2012-02-17 11:45:28

0

你的模式是什么?

我想这&它的工作原理(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; 
0

尝试加倍%:%%

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