我想删除包含%
符号的记录,例如:
white%House,Den%mark,bengali%20Tiger,White%202。
我有这个查询,但它对我不起作用。
delete from nail where name like '%[%]%'
我正在使用C#和Access。
答案 0 :(得分:1)
我认为存在一些混乱,所以这里有一个适合我的完整代码示例:
using ( var conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\users\john\desktop\Database11.accdb;Persist Security Info=False;"))
{
conn.Open();
OleDbCommand cmd =
new OleDbCommand("DELETE FROM TABLE1 where [name] like '%[%]%'", conn);
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();
}
请注意,您使用“name”作为字段之一,这是一个保留字,因此您需要在括号内转义它。 %也是如此,因为它是OLEDb使用的通配符。
答案 1 :(得分:1)
您可以使用InStr()
查找名称是否包含%
where InStr(name, '%') > 0
答案 2 :(得分:0)
尝试:
delete from nail where name like '%[[%]%'
答案 3 :(得分:0)
以下在MS Access中为我本地工作
DELETE foo.foo1
FROM foo
WHERE (((foo.foo1) ALike "%[%]%"));
也许这是双引号而不是撇号。
也许在C#中你需要做类似
的事情bar = "DELETE foo.foo1 FROM foo WHERE (((foo.foo1) ALike \"%[%]%\"));";
答案 4 :(得分:0)
为了完整起见:
在以默认SQL模式(ANSI 89)运行的MS Access中,您将使用:
Like "*%*"
同样,如果你使用DAO来执行SQL,你就可以使用它。
在ANSI 92模式下运行时,此处只会出现问题,只有在打开ANSI 92时,或者如果您使用的是ADO,或者使用ALIKE
代替{ {1}}。在这种情况下,您必须使用更标准的LIKE
通配符。如果您在Access中运行或使用DAO,则可以使用%
来使用ALIKE
通配符:
ALike“%[%]%”
但是如果你在SQL 92模式下运行Access,根本不需要%
,你可以只使用ALIKE
(但我绝不建议在SQL 92模式下运行Access,因为它破坏了Access中的许多东西。
如果您使用ADO / OLEDB执行SQL,则唯一的选择是SQL 92模式,您应该可以使用LIKE
或类似ALike "%[%]%"
。不过,我不知道双引号是否有所作为。在我在Access中使用ADO的测试中,它没有任何区别。