我有两个SQL查询:OLEDB查询到SQL Server失败
A.
SELECT (upper(rtrim(ltrim(lastname))) + upper(rtrim(ltrim(firstname))) +
upper(rtrim(ltrim(middlename))) + rtrim(ltrim(v))) AS userCompareStr
FROM atable ;
和
B.
SELECT (upper(rtrim(ltrim(lastname))) + upper(rtrim(ltrim(firstname))) +
upper(rtrim(ltrim(middlename))) + rtrim(ltrim(v))) AS userCompareStr
FROM atable WHERE userCompareStr='GAPYLE1111' ;
我有以下代码:
Dim sql As String
Dim conn As OleDbConnection
Dim cmd As OleDbDataAdapter
Dim ds As DataSet
Dim tbl As DataTable
conn = " something here "
cmd = New OleDbDataAdapter(sql, conn)
ds = New DataSet
cmd.Fill(ds)
tbl = New DataTable
tbl = ds.Tables(0)
近,我可以告诉它似乎当SQL设置为字符串中的工作,但不是当它被设置为字符串B.
这使我怀疑,有什么不对的条款 WHERE userCompareStr = 'GAPYLE1111'
我不能以这种方式使用alias userCompareStr吗?我找不到任何这种用法的例子,但是当别名用于表名时,我确实发现了类似的用法 - 而且我没有看到任何反对这种用法的东西。
这是我所有的消息。感谢您的额外指针。我会研究它。 – elbillaf
@TheFallibleFiend没有问题这里是关于这个主题的规范漫画http://xkcd.com/327/ –
它在我看来像OLEDB不喜欢“与”。 我已经简化了SQL,期待它返回任何结果,但至少执行: WITH AS CTE (SELECT(姓+姓名+中间名 + ssn4)作为userCompareStr FROM atable) SELECT userCompareStr FROM CTE WHERE userCompareStr ='GAPYLE1111'; 但它失败了。我不确定,但我认为oledb不能识别所有的sql。我会尝试一些其他的例子。 – elbillaf