t-sql побег проблема - PullRequest
2 голосов
/ 26 июня 2010

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

Когда я пытаюсь удалить Удалить из dbo.Cities, где name = 'Àrbatax';я получаю (затронуты 0 строк), даже в БД существует 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';

Ответы [ 4 ]

7 голосов
/ 26 июня 2010

Избегайте одинарных кавычек в T-SQL, удваивая их:

Delete from dbo.Cities where name = 'Ra''s al Khaymah';
5 голосов
/ 26 июня 2010

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

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

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

2 голосов
/ 26 июня 2010

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

Delete from dbo.Cities where name = N'Àrbatax';
1 голос
/ 26 июня 2010

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

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

    Информация о nchar и nvarchar:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...