我在访问数据库上使用oledb查询的命令行时遇到了一些麻烦。 我已经尝试了许多不同的语法,无论是访问还是我的代码。与数据库的连接很好,当我尝试填充da时,或者当我在访问中将其作为查询运行时,会出现错误。
SELECT * FROM MyTable WHERE MyColumn = 'This Text String';
当我在access中运行它时,我得到数据类型不匹配。双引号产生相同的结果。我认为这是因为空格,我试图将文本字符串包装在方括号中:
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),不仅仅是访问中的纯文本,它实际上是在另一个表中查找列。
Pehaps就是这个问题,因为数据类型实际上不是文本,而是数字(因为它是一个列表)。好的......我怎么克服这个?
答案 0 :(得分:1)
您需要加入查找表
SELECT * FROM MyTable INNER JOIN Lookup l on MyColumn = l.key and l.value = 'This Text String';