2010-06-26 5 views
2

Я не могу удалить эти строки из БД из-за незакрытых кавычек. Как cn я избегаю этого. Я пытаюсь использовать обратную косую черту, но не работает.проблема с удалением t-sql

Когда я пытаюсь удалить Delete from dbo.Cities где name = 'Àrbatax'; Я получаю (0 строк (строк)) даже в DB 12 строк. Проблема с непризнанным полукоксом À

Delete from dbo.Cities where name = 'Ra's al Khaymah'; 
Delete from dbo.Cities where name = 'Cala de s'Algar'; 
Delete from dbo.Cities where name = 'Monte Sant'Angelo'; 
Delete from dbo.Cities where name = 'San Pawl il-Baħar'; 
Delete from dbo.Cities where name = 'Santa Eulària des Riu'; 
Delete from dbo.Cities where name = 'São Luís'; 
Delete from dbo.Cities where name = 'Platja d'Aro'; 
Delete from dbo.Cities where name = 'Cefalù'; 
Delete from dbo.Cities where name = 'Lun-Pequeño'; 
Delete from dbo.Cities where name = 'Àrbatax'; 
Delete from dbo.Cities where name = 'Breña Baja'; 
+0

Только в случае, если это имеет значение, вы можете сказать нам, какой SQL-сервер вы используете? MySQL? SQL Server? – Eilon

+2

t-sql является частью MS SQL – senzacionale

+0

@sezacionale: Это не просто SQL Server. Sybase также использует Transact-SQL. http://en.wikipedia.org/wiki/Transact-SQL –

ответ

7

Побег одинарных кавычек в T-SQL, по их удвоению:

Delete from dbo.Cities where name = 'Ra''s al Khaymah'; 
5

Для одинарных кавычек Я считаю, что вы можете удвоить котировки:

Delete from dbo.Cities where name = 'Ra''s al Khaymah' 

Я не уверен, о других персонажах.

1

Одно из возможных объяснений, что может привести к удалению, чтобы не работать, потому что есть специальные символы в вашем где п и у вас есть апостроф внутри строковый литерал, который ограничен одиночными кавычками.

  1. Шаг один будет проверить, что является тип данных столбцов, где у вас есть специальные символы. Если эти столбцы имеют тип char или varchar, вы должны изменить их на nchar или nvarchar. За этим стоит , что char и varchar не поддерживает символы unicode (другими словами, специальных символов).

    Информация о NCHAR и NVARCHAR:

  2. Шаг два бы изменить код вы используете для удаления данных. В для того, чтобы иметь единственную цитату внутри строкового литерала для сравнения в том случае, когда вы должны написать две одинарные кавычки. Пример: Delete from dbo.Cities where name = 'Ra''s al Khaymah';.

Надеюсь, это поможет!

2

Если у вас есть строки с не-ASCII символов, вам нужно использовать Unicode цитирует N «»:

Delete from dbo.Cities where name = N'Àrbatax'; 
Смежные вопросы