gpt4 book ai didi

c# - 如何在 C# 中通过 OLEDB 在 Access SQL 通配符查询中使用文字下划线?

转载 作者:行者123 更新时间:2023-11-30 22:54:55 26 4
gpt4 key购买 nike

首先,我一直在学习this related stack post , 但它一直无法解决我的问题。

当我在 MS Access 365 查询窗口中运行以下查询时,我按预期获得了 97 条记录:

SELECT *
FROM Prices
WHERE OptionID Like '*_*'

我的目标是返回所有 OptionID 包含下划线的记录。成功。

当我在 MS Access 365 查询窗口中运行以下查询时,我按预期获得了 109,967 条记录:

SELECT *
FROM Prices

我的 OptionID 中只有 97 个带有下划线,因此上面第一个查询中的 where 子句将记录集限制为 97 个记录,正如预期的那样。

这就是它变得棘手的地方。

当我在我的 C# 应用程序中运行此查询时,通过 OleDb 连接到 Access:

SELECT *
FROM Prices
WHERE OptionID Like '*_*'

...我返回了 0 条记录。原因是因为通过 OleDb Access SQL 在通配符时必须使用 % 而不是 *。那么我这样做:

SELECT *
FROM Prices
WHERE OptionID Like '%_%'

...我得到了 109,967 条记录。好像 where 子句 被忽略了!我相信正在发生的事情是 OleDb 将下划线解释为单字符通配符本身,因此没有发生过滤。

因此我的问题总结如下:我无法弄清楚如何告诉 Access(通过 OleDb)我想将下划线用作文字而不是通配符,由 % 包围 在通配符查询中。它是如何完成的? (我尝试使用 \\\ 转义下划线,但没有成功。)

最佳答案

将下划线放在“字符范围”内,用方括号分隔。然后 Access 将理解您希望将其视为文字下划线字符而不是作为匹配任何单个字符的 ANSI 92 模式(您正在与 OleDb 一起使用)通配符。

WHERE OptionID Like '%[_]%'

关于c# - 如何在 C# 中通过 OLEDB 在 Access SQL 通配符查询中使用文字下划线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55801972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com