2012-06-29 74 views
2

我有以下Access查询:访问替换功能

SELECT [city] 
FROM [patient] 
WHERE REPLACE([patient].[city],' ',' ') LIKE 'San D*' 

我这个曾经工作相对比较确定的,但现在我得到Data type mismatch in criteria expression.

任何想法?

编辑

任何人都愿意测试针对自己的数据的SQL?

回答

1

问题原来是列中的空值。

解决的办法是:

SELECT [city] 
FROM [patient] 
WHERE REPLACE(
    IIF(ISNULL([patient].[city]),'',[patient].[city]) 
    ,' ',' ') LIKE 'San D*' 
+1

这非常有帮助!谢谢! – ic3b3rg

3

城市存储为字符串吗?如果它存储为一个数字(也许作为一个fkey到另一个表),那么当你使用字符串操作时,这是有意义的。

编辑:自我注意:不要忘记空值。

+0

不,这是一个字符串。 – ic3b3rg

+1

@ ic3b3rg你确定它是一个字符串吗?您在设计视图中查看了桌子本身,并确保没有使用查找表?我问,因为查询适合我。 – Fionnuala

+0

@Remou问题是列中的空值 - 我用解决方案添加了答案。 – ic3b3rg