尝试在查询中搜索带或不带短划线的字段?

时间:2013-03-21 04:44:28

标签: sql sql-server sql-server-2008 ms-access

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

你走了:

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

输出:x-yz

Live Demo

答案 1 :(得分:0)

以下为我工作。

SELECT Replace([fieldname],"-","") AS Expr1
FROM tablename
WHERE (((Replace([fieldname],"-","")) Like "%xyz%"));