2013-03-19 46 views
0

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

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

当我在acces中运行这个,我得到一个数据类型不匹配。双引号产生相同的结果。我认为这是因为空间做我试图包裹在方括号正是如此的文本字符串:

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

在访问这个提示“输入参数值”列出参数“本文本字符串”。

我也使用Like运算符尝试:

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

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

在这一点上,我不知道还有什么要尝试。我想要做到的是:

返回所有行“MyTable的”,其中在“MyColumn”文本等于“这个文字串”

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


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

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

Pehaps这是个问题,因为数据类型不是真正的文本,它的数量(因为它是一个列表)。好的...我怎么克服这个问题?

+0

什么是列类型?什么是错误? – dfb 2013-03-19 01:47:42

+0

哇...快速回复!这就是我刚刚意识到并编辑的帖子。含“这个文本字符串”数据类型不是文本列,它的数字,因为它看起来最多可从另一个表的另一列的选择。有没有一种方法,我可以引用,或者我需要知道什么是项目的数量在含表? – NapkinBob 2013-03-19 01:52:30

回答

1

你需要加入查找表

SELECT * FROM MyTable INNER JOIN Lookup l on MyColumn = l.key and l.value = 'This Text String';