DELETE FROM 查询中的多个 IN 条件抛出 #245 转换类型错误
Multiple IN Conditions on a DELETE FROM query throwing a #245 Conversion Type Error
我的 table 设置如下:
Parameters
╔═══╦═════════╦════════╗
║ID ║ Name ║ Value ║
╠═══╬═════════╬════════╣
║ 7 ║ first ║ 0 ║
║ 7 ║ second ║ -1 ║
║ 7 ║ third ║ -1 ║
╚═══╩═════════╩════════╝
它包含更多行,但我只想删除上面列出的行。我在下面进行了以下查询来执行此操作,但是当您将第三个值添加到名称的 IN 条件时,我得到:
ErrorNumber 245 - "Conversion failed when converting the varchar value to data type int."
DELETE FROM Parameters
WHERE
ID = 7 AND
Name IN ('first', 'second', 'third') AND
Value IN (0, -1)
如果我删除 IN 条件 1 或 2 名称中的 3 个名称中的任何一个,它运行正常,但我需要在同一查询中删除第三行。我该怎么做才能做到这一点?
显然,id
或 value
是一个字符串。 SQL 服务器必须决定使用什么类型。如果将字符串与数字进行比较,则使用数字。如果另一行有错误的数字,则会出现类型转换错误。
您应该使用正确的类型进行比较。如果非要我猜的话,应该是 value
:
DELETE FROM Parameters
WHERE
ID = 7 AND
Name IN ('first', 'second', 'third') AND
Value IN ('0', '-1');
您 可以 将单引号放在数字常量周围,例如 7
。我不鼓励这样做,因为误用类型是一种不良的编码习惯。
我的 table 设置如下:
Parameters
╔═══╦═════════╦════════╗
║ID ║ Name ║ Value ║
╠═══╬═════════╬════════╣
║ 7 ║ first ║ 0 ║
║ 7 ║ second ║ -1 ║
║ 7 ║ third ║ -1 ║
╚═══╩═════════╩════════╝
它包含更多行,但我只想删除上面列出的行。我在下面进行了以下查询来执行此操作,但是当您将第三个值添加到名称的 IN 条件时,我得到:
ErrorNumber 245 - "Conversion failed when converting the varchar value to data type int."
DELETE FROM Parameters
WHERE
ID = 7 AND
Name IN ('first', 'second', 'third') AND
Value IN (0, -1)
如果我删除 IN 条件 1 或 2 名称中的 3 个名称中的任何一个,它运行正常,但我需要在同一查询中删除第三行。我该怎么做才能做到这一点?
显然,id
或 value
是一个字符串。 SQL 服务器必须决定使用什么类型。如果将字符串与数字进行比较,则使用数字。如果另一行有错误的数字,则会出现类型转换错误。
您应该使用正确的类型进行比较。如果非要我猜的话,应该是 value
:
DELETE FROM Parameters
WHERE
ID = 7 AND
Name IN ('first', 'second', 'third') AND
Value IN ('0', '-1');
您 可以 将单引号放在数字常量周围,例如 7
。我不鼓励这样做,因为误用类型是一种不良的编码习惯。