2012-02-17 3 views
3

Мне нужно изменить значения в моей базе данных. Одно из значений строк может содержать знак %.Знак процента (%) в INSERT

Грубый пример:

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

Изменение не сохраняется в базе данных. Как я могу избежать знака процента в SQL Server

+1

Как вы взаимодействуете с базой данных? Использование IDE/Client или самостоятельного написания программного обеспечения? –

+8

Это обычный запрос SQL Server. Он должен работать правильно. –

+0

Возможный дубликат [Как избежать процентного знака в T-SQL?] (Http://stackoverflow.com/questions/7191449/how-do-i-escape-a-percentage-sign-in-t-sql) –

ответ

0

Вы пробовали экранировать символ с помощью «\»?

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

Это просто обновляет столбец значением «Процентная ставка составляет 7%» - как это помогает? – onedaywhen

+0

Установите escape-символ как '\' –

+1

Синтаксис 'SET..ESCAPE' не существует! – onedaywhen

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

Я ожидал ответа здесь :) –

+0

Я получаю сообщение об ошибке при запуске вашего кода: «Неправильный синтаксис рядом с ключевым словом ''ESCAPE''«. (если я комментирую слово «ESCAPE» включительно, то он выполняется, но, очевидно, добавляет нежелательный '\') – onedaywhen

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%%'; 
Смежные вопросы