0

我在访问数据库上的 oledb 查询的命令行上遇到了一些问题。我已经尝试了许多不同的语法,无论是在访问中还是在我的代码中。与数据库的连接很好,当我尝试填充 da 或将其作为访问中的查询运行时出现错误。

SELECT * FROM MyTable WHERE MyColumn = 'This Text String';

当我在访问中运行它时,我得到一个数据类型不匹配。双引号产生相同的结果。我认为这是因为空格我尝试将文本字符串包装在方括号中:

SELECT * FROM MyTable WHERE MyColumn = [This Text String];

在 Access 中,这会提示“输入参数值”,将参数列为“此文本字符串”。

我也尝试过使用 Like 运算符:

SELECT * FROM MyTable WHERE MyColumn LIKE 'This Text String';

无论是单引号还是双引号,这都不会产生错误,但也不会产生任何结果。我试过 CONTAINS 这给了我一个语法错误。

在这一点上,我不知道还能尝试什么。我想要完成的是:

返回“MyTable”中“MyColumn”中的文本等于“This Text String”的所有行

有人能帮我吗?我觉得我忽略了一些东西,可能很明显。


编辑:啊...我不确定这是否是问题所在,但也许会有所帮助。

我刚刚意识到我试图过滤的列(MyColumn)不仅仅是访问中的纯文本,它实际上是在另一个表中查找列。

也许这就是问题所在,因为数据类型实际上不是文本,而是数字(因为它是一个列表)。好的...我该如何克服呢?

4

1 回答 1

1

您需要加入查找表

SELECT * FROM MyTable INNER JOIN Lookup l on MyColumn = l.key and l.value =  'This Text String';
于 2013-03-19T02:07:06.727 回答