2012-02-17 93 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%%';