我想知道区分大小写的 MS Access 选择查询。
我有两个 VitualMonitorName 值,如下所示
VCode VirtualMonitorName
Row 1 (1, 'VM1');
Row 2 (2, 'Vm1');
这里两个值是不同的。
如果我写
"SELECT VCode FROM VirtualMaster WHERE VirtualMonitorName like '" + Vm1 + "'";
它只回复 VCode = 1。
我想知道区分大小写的 MS Access 选择查询。
我有两个 VitualMonitorName 值,如下所示
VCode VirtualMonitorName
Row 1 (1, 'VM1');
Row 2 (2, 'Vm1');
这里两个值是不同的。
如果我写
"SELECT VCode FROM VirtualMaster WHERE VirtualMonitorName like '" + Vm1 + "'";
它只回复 VCode = 1。
您可以使用StrComp()
with 函数vbBinaryCompare
进行区分大小写的比较。这是立即窗口中的一个示例,以显示其StrComp()
工作原理。有关详细信息,请参阅 Access 帮助主题。
? StrComp("a", "A", vbBinaryCompare)
1
? StrComp("a", "A",vbTextCompare)
0
StrComp()
如果前两个参数的计算结果相等,则返回 0,如果它们不相等,则返回 1 或 -1,如果任一参数为 Null,则返回 Null。
要在查询中使用该函数,请提供vbBinaryCompare
常量的值 (0) 而不是其名称。
SELECT VCode
FROM VirtualMaster
WHERE StrComp(VirtualMonitorName, "Vm1", 0) = 0;
如果其他应用程序使用较新的 Access 数据库引擎 ("ACE") 驱动程序,则此方法也可用于来自其他应用程序的查询。例如,下面的 C# 代码
string myConnectionString =
@"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
@"Dbq=C:\Users\Public\Database1.accdb;";
using (OdbcConnection con = new OdbcConnection(myConnectionString))
{
con.Open();
using (var cmd = new OdbcCommand())
{
cmd.Connection = con;
cmd.CommandText =
"SELECT COUNT(*) AS n FROM [VirtualMaster] " +
"WHERE StrComp([VirtualMonitorName],?,?) = 0";
cmd.Parameters.AddWithValue("?", "Vm1");
cmd.Parameters.Add("?", OdbcType.Int);
var vbCompareOptions = new Dictionary<string, int>()
{
{"vbBinaryCompare", 0},
{"vbTextCompare", 1}
};
string currentOption = "";
currentOption = "vbBinaryCompare";
cmd.Parameters[1].Value = vbCompareOptions[currentOption];
Console.WriteLine(
"{0} found {1} record(s)",
currentOption,
Convert.ToInt32(cmd.ExecuteScalar()));
currentOption = "vbTextCompare";
cmd.Parameters[1].Value = vbCompareOptions[currentOption];
Console.WriteLine(
"{0} found {1} record(s)",
currentOption,
Convert.ToInt32(cmd.ExecuteScalar()));
}
}
生产
vbBinaryCompare found 1 record(s)
vbTextCompare found 2 record(s)
看一下这个:
https://support.microsoft.com/kb/244693?wa=wsignin1.0
本文介绍了四种使用 Microsoft Jet 数据库引擎实现区分大小写的 JOIN 的方法。这些方法中的每一种都有优点和缺点,在选择实现之前应该权衡一下。方法是:
仅使用内置函数,在查询设计视图中添加一个额外的自定义列:
location: InStr(1,[VCode],"VM1",0)
在找到“VM1”的位置时,零参数请求二进制比较(区分大小写)[VCode]
将该列中的条件设置为,>0
以便仅在 vcode 匹配中具有非零位置的记录Like "*vm*"
包含确切的 VM1 字符串 -
该WHERE
子句如下所示:
WHERE (((VirtualMaster.VCode) Like "\*vm*") AND ((InStr(1,[VCode],"VM1",0))>0));
在更简单的编码级别上使用。
作为 DCOUNT 操作中的条件,检查必须具有正确大小写的字段(列),并忽略空白状态/区域。
' lngcounter will count the all States
' or Territories Field ( Column) with this
' exact case value of 'Ohio'. ([ID] is an Autonumber ID field)
lngCounter = DCount("[id]", Trim(Me!tboDwellingTablename), "[State/territory],'Ohio',0) = 0")
这只写一个字母:
MS-访问 SQL:
SELECT Asc(Left([Title],1)) AS t FROM Master WHERE (((Asc(Left([Title],1)))=105));
Title
是您要搜索的字段
Master
Title
是字段所在的表
105
字符的ASCII码..
在这种情况下,只有以 i 开头的 Title,而不是 I
如果要搜索小写“a”,请将 105 更改为 97