c# - OleDb连接到 MS Access : SQL query like clause with escape characters and wildcards

标签 c# ms-access sql-like oledbconnection

一定有一些非常明显的答案,但我只是看不到它,也无法从网络上找到解决方案。

我尝试从数据库表中计算有多少行包含文件路径(如“路径”)。

在 Access 设置表中,我有一些行,其中路径字段(短文本类型)包含字符串:

\\server\dir\something\

我想计算字段以“\server\dir..”开头的行。

在使用 MS Access 失败后,我开始使用 mariaDB 和 heidiSQL 进行测试,并进行了一些尝试和错误,然后才通过此查询获得有效答案:

SELECT COUNT(*) FROM `Settings` WHERE `path` LIKE "%\\\\\\\\server\\\\dir\\\\%"
-> returns Count(*) = 3

在 C# 中,我得到了与此相同的返回值(通过反复试验再次发现):

string query = @"SELECT COUNT(*) FROM Settings WHERE path LIKE '%\\\\\\\\server\\\\dir\\\\%'";
var Test = MySqlHelper.ExecuteScalar(connString, query);
-> returns Count(*) = 3

现在我无法使用 OleDb 库使用 C# 和 Access 获得相同的工作:

string query = @"SELECT COUNT(*) FROM Settings WHERE path LIKE '*\\\\\\\\server\\\\dir\\\\*'";
OleDbConnection connection = new OleDbConnection(databsefile);
OleDbCommand command = new OleDbCommand(query, connection);
connection.Open();
var Test = command.ExecuteScalar();
-> returns Count(*) = 0

我还尝试过查询(使用 C# 和使用 OleDb 库的 Access):

string query = @"SELECT COUNT(*) FROM Settings WHERE path LIKE '*\\\\server\\dir\\*'";
-> return count(*) = 0
string query = @"SELECT COUNT(*) FROM Settings WHERE path LIKE '*\\server\dir\*'";
-> return count(*) = 0

这适用于 MS Access 2013,给出有效结果:

SELECT COUNT(*) FROM Settings WHERE path LIKE '*\\server\dir\*'
->returns Count(*) = 3

编辑:更改了数据库表名称表 -> 设置

最佳答案

当在字符串前使用@时,不需要再次转义反斜杠。 LIKE 的占位符是 %,而不是 *。

所以尝试一下:

string query = @"SELECT COUNT(*) FROM table WHERE path LIKE '%\\\\server\\dir\\%'";

为了避免所有转义,请考虑使用 SQL 参数。

PS:table是保留关键字。您不应该命名表 table,这总是会导致问题。

关于c# - OleDb连接到 MS Access : SQL query like clause with escape characters and wildcards,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804557/

相关文章:

enumeration - 是否可以在 PostgreSQL 中将枚举转换为文本

c# - c# 中是否可以使用二维列表?

c# - 在 C# 中从未知的 JSON 内容创建一个无序列表

ms-access - Microsoft.Jet.OleDb 和 Microsoft.Ace.OleDb 之间的区别

sharepoint - 如何安排对 MS Access 宏的调用?

sql-server - 绑定(bind)状态为 "DT_NTEXT"。数据流列类型为 "DBBINDSTATUS_UNSUPPORTEDCONVERSION"

mysql - MySQL 和 jdbc 中的类似运算符和西里尔字母

c# - Chrome 浏览器 61v。单击可见区域外的元素时出现问题

c# - 放置 Database.SetInitializer 的地方

Python mysql 连接器 LIKE 针对 unicode 值