我正在使用VBA和SQLdeveloper来比较数据库的多个关键字输入。我要么使用所有ANDs或所有OR进行搜索,ANDs一直工作正常,但我希望OR根据成功比较的次数返回。我目前的代码似乎以随机的方式返回结果,而不是我想要它本质上是相关性的。这是我的代码示例:
Dim sSQLOrder As String
sSQLOrder = " ORDER BY ( Title LIKE '%Title Keyword 1%' + Title LIKE '%Title
Keyword 2%' + ...) DESC"
根据我的理解,这应该排序,但不是。我也尝试过排序ASC vs DESC,这会改变顺序,但不会以任何有效的方式。感谢您阅读本文。
答案 0 :(得分:4)
在任何数据库中,您都应该能够使用ANSI标准CASE
表达式:
ORDER BY (CASE WHEN Title LIKE '%Title Keyword 1%' THEN 1 ELSE 0 END +
CASE WHEN Title LIKE '%Title Keyword 1%' THEN 1 ELSE 0 END +
. . .
) DESC
答案 1 :(得分:0)
首先尝试在Oracle SQL Developer中运行SQL,然后在VBA中定义字符串并执行PASS THROUGH查询(ADODB连接)。
如果您尝试在Jet引擎中使用CASE WHEN,则会失败。 Native Access只允许"立即使用#34; IIF()函数 - 你仍然可以抛入ORDER BY子句(因为它不像CASE WHEN那样强大,所以它会很混乱)。