在Excel中使用ODBC查询时,如何在WHERE子句中实现包含匹配?
Excel ODBC查询实现名字包含匹配的正确方法
问题根源分析
你之前的写法存在两个关键语法错误:
- CONTAINS函数用法错误:CONTAINS的正确语法是
CONTAINS(目标列, '匹配关键词'),不能直接嵌套WHERE条件。 - LIKE语句缺少引号:SQL中使用通配符
%时,必须将整个匹配字符串用单引号包裹,否则会触发语法错误。
正确的查询写法
方法1:使用LIKE实现模糊匹配(通用兼容所有支持SQL的数据库)
SELECT "SURNAME", "FORENAME" FROM DATABASEname WHERE "SURNAME" = 'PARKINSON' AND "FORENAME" LIKE '%CRAIG%'
- 注意
'%CRAIG%'的单引号,%表示任意长度的任意字符,前后都加表示匹配包含"CRAIG"的任意字符串。
方法2:使用CONTAINS(仅适用于支持全文索引的数据库,如SQL Server)
如果你的数据库支持全文检索功能,且FORENAME列已创建全文索引,可以用以下写法:
SELECT "SURNAME", "FORENAME" FROM DATABASEname WHERE "SURNAME" = 'PARKINSON' AND CONTAINS("FORENAME", 'CRAIG')
额外注意事项
- 确保表名
DATABASEname和列名的引号使用正确(不同数据库对引号要求不同,若报错可尝试调整为反引号`或去掉引号)。 - 检查ODBC数据源配置是否正确,确认连接的数据库版本支持你使用的语法。
内容的提问来源于stack exchange,提问作者Firemaster
相关产品推荐
相关产品推荐

