t-sql转义问题

时间:2010-06-26 05:45:25

标签: sql-server tsql

我无法从DB中删除此行,因为未闭合的引号。我怎么逃避它。我尝试使用反斜杠但没有工作。

当我尝试从名为='Àrbatax'的dbo.Cities中删除删除时;我得到(0行(s)受影响)即使在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';

4 个答案:

答案 0 :(得分:7)

将T-SQL中的单引号翻倍:

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

答案 1 :(得分:5)

对于单引号我相信你可以加倍报价:

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

我不确定其他角色。

答案 2 :(得分:2)

如果您的字符串包含非ASCII字符,则需要使用Unicode引号N'':

Delete from dbo.Cities where name = N'Àrbatax';

答案 3 :(得分:1)

可能导致删除不起作用的一种可能解释是因为where子句中有特殊字符,并且在单引号分隔的字符串文字中有单引号。

  1. 第一步是检查一下 是列的数据类型 你有特殊的角色。如果 这些列的类型为charvarchar您必须将其更改为 ncharnvarchar。原因 这背后是char和。{ varchar不支持unicode 人物(换句话说是 特殊字符)。

    有关nchar和nvarchar的信息:

  2. 第二步是修改代码 您正在使用删除数据。在 为了在字符串文字中包含单引号 在where子句中比较你 必须写两个单引号。 示例:Delete from dbo.Cities where name = 'Ra''s al Khaymah';

  3. 我希望这有帮助!