2010-06-26 4 views
2

닫히지 않은 따옴표 때문에 DB에서이 줄을 삭제할 수 없습니다. 어떻게 그걸 벗어날 수 있을까? 백 슬래시로 시도하지만 작동하지 않습니다.t-sql 이스케이프 문제

dbo.Cities에서 삭제를 삭제하려고 할 때 name = 'Àrbatax'; 내가 DB를 12 행에도 존재 (0 행 (들) 영향을) 얻을. 작은 따옴표를 들어

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

탈출 따옴표 :

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

À 인식 할 수없는 문자에 문제는 당신이 따옴표를 두 배로 수 있다고 생각 :

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

내가 다른 문자에 대한 확실하지 않다. 그들을 두 배로하여 T-SQL에서

1

이 당신의 where 절에 특수 문자가 당신 안에 작은 따옴표를 가지고 있기 때문에 삭제가 작동하지 발생할 수 있습니다 한 가지 가능한 설명입니다 작은 따옴표로 구분 된 문자열 리터럴.

  1. 단계는 하나 는 특수 문자를 컬럼의 데이터 유형이 무엇인지 확인하는 것입니다. 경우 그 열은 유형 char의 또는 varchar 당신은 nchar 또는 nvarchar로 변경해야합니다. 그 이유는 이면 charvarchar은 유니 코드 자 (즉, 특수 문자)를 지원하지 않기 때문입니다. NCHAR 및 NVARCHAR에

    정보 :

  2. 2 단계는 데이터를 삭제하기 위해 사용하는 코드 를 수정하는 것입니다. 에서 비교를위한 문자열 리터럴 내에서 작은 따옴표를 사용하려면 에 두 개의 작은 따옴표를 써야합니다. 예 : Delete from dbo.Cities where name = 'Ra''s al Khaymah';.

이 정보가 도움이 되었기를 바랍니다. 당신이 비 ASCII 문자 문자열이있는 경우

2

, 당신은 유니 코드 ''N을 인용 사용할 필요가 :

이 중요한 그냥 경우
Delete from dbo.Cities where name = N'Àrbatax';