2

我有一个表(table.foo),我试图在其中搜索特定字段。我有一个使用 SQL 查询输出结果的 MS Access 表单。我有一个用户希望能够搜索此字段

如果我使用简单的选择查询

SELECT foo FROM table
WHERE foo LIKE '%xyz%'

我会得到任何带有 xyz 的字符串,但是如果用户搜索 x-yz,他们显然不会得到任何记录where table.foo='xyz' 。无论搜索字符串中是否存在破折号,我将如何构建查询以返回结果?

我知道我可以复制 table.foo 列并创建一个 table.foo-search 列并从新字段中删除破折号,但这似乎会浪费空间可能不必要,而且需要在数据库中维护第二列.

4

2 回答 2

2

干得好:

select foo from table
where REPLACE ( REPLACE ( foo, '-', '' ) , ' ', '' ) like '%xyz%'

输出:x-yz

现场演示

于 2013-03-21T04:57:16.437 回答
0

以下对我有用。

SELECT Replace([fieldname],"-","") AS Expr1
FROM tablename
WHERE (((Replace([fieldname],"-","")) Like "%xyz%"));
于 2013-03-23T03:02:24.240 回答