Sql 访问和/或排除

Sql 访问和/或排除,sql,ms-access,Sql,Ms Access,我有一些样本数据,如: |H.RISK|NOTE|NORMAL| |实际上在数据中,它是一个字符串 我正在使用Access,并试图排除字符串中包含RISK的记录 示例查询: SELECT * FROM someTable WHERE (UCase(someTable.Field) NOT LIKE '*RISK*') AND (UCase(someTable.Field) NOT LIKE '*Blah*') AND someTable.SomeOtherField <> 4;

我有一些样本数据,如:

|H.RISK|NOTE|NORMAL|
|
实际上在数据中,它是一个
字符串

我正在使用Access,并试图排除字符串中包含
RISK
的记录

示例查询:

SELECT * FROM someTable WHERE (UCase(someTable.Field) NOT LIKE '*RISK*') AND (UCase(someTable.Field) NOT LIKE '*Blah*') AND someTable.SomeOtherField <> 4;
从someTable中选择*,其中(UCase(someTable.Field)不喜欢“*RISK*”,(UCase(someTable.Field)不喜欢“*Blah*”)和someTable.sometherfield 4;
问题是,查询返回上述示例记录,即使它确实包含字符串
RISK

我尝试了相同的查询,但切换到
而不是
,但得到了相同的结果


如何正确构造此查询以排除包含特定字符串的记录?

如果您正在使用SQL语法运行,请尝试使用正确的通配符

SELECT * FROM someTable WHERE (someTable.Field NOT LIKE '%RISK%') AND (someTable.Field NOT LIKE '%Blah%') AND someTable.SomeOtherField <> 4;
从someTable中选择*,其中(someTable.Field不象“%RISK%”和(someTable.Field不象“%Blah%”)和someTable.sometherfield 4;

看起来您正在使用通配符-这可能是您的问题所在。查看此链接是否有帮助:您如何运行该查询?如果从ADO/OleDb,或从Access内部使用SQL Server兼容语法选项集,则需要ANSI通配符:
与“%RISK%”不同
我正在使用名为AutoIt的脚本程序使用ADODB与Access对话并执行查询。@HansUp,因为
someTable.FIELD
可能是大写的,也可能不是大写的,因此,为了确保我们匹配,需要使用
UCase
。我编辑过,但它似乎是必要的。不管怎样,我认为外卡是问题所在。就是这样。通配符。我习惯于使用
*
而不是标准的
%
访问“伪sql”。谢谢