4

我正在通过 Excel 中的 Microsoft Query 访问 Firebird 数据库。

我在 Excel 中有一个包含 4 位数字的参数字段。我的一个 DB 表有一列 ( TP.PHASE_CODE),其中包含 9 位相位代码,我需要返回以指定为参数的 4 位代码开头的任何 9 位代码。

例如,如果我的参数字段包含“8000”,我需要在另一个表/列中查找并返回任何相位代码,即LIKE '8000%'.

我想知道如何在 SQL 中完成此操作,因为它看起来不像“?” 表示参数可以包含在 LIKE 语句中。(如果我输入 4 位数字,查询工作正常,但它不会让我在那里使用参数。)

有问题的陈述是这样的: TP.PHASE_CODE like '?%'

这是我的完整代码:

SELECT C.COSTS_ID, C.AREA_ID, S.SUB_NUMBER, S.SUB_NAME, TP.PHASE_CODE, TP.PHASE_DESC,       TI.ITEM_NUMBER, TI.ITEM_DESC,TI.ORDER_UNIT,
C.UNIT_COST, TI.TLPE_ITEMS_ID FROM TLPE_ITEMS TI
INNER JOIN TLPE_PHASES TP ON TI.TLPE_PHASES_ID = TP.TLPE_PHASES_ID
LEFT OUTER JOIN COSTS C ON C.TLPE_ITEMS_ID = TI.TLPE_ITEMS_ID
LEFT OUTER JOIN AREA A ON C.AREA_ID = A.AREA_ID
LEFT OUTER JOIN SUPPLIER S ON C.SUB_NUMBER = S.SUB_NUMBER

WHERE (C.AREA_ID = 1 OR C.AREA_ID = ?) and S.SUB_NUMBER = ? and TI.ITEM_NUMBER = ? and **TP.PHASE_CODE like '?%'**

ORDER BY TP.PHASE_CODE

关于完成此查询的替代方法的任何想法?

4

3 回答 3

6

如果您使用 `LIKE '?%',那么问号是文字文本,而不是参数占位符。

您可以使用LIKE ? || '%', 或者如果您的参数本身从不包含 LIKE-pattern:STARTING WITH ?如果您正在查询的字段被索引,这可能会更有效。

于 2013-06-05T07:45:04.467 回答
4

你可以做

and TP.PHASE_CODE like ?

但是当您将参数传递8000给 SQL 时,您必须在其%后面添加参数,因此在这种情况下,您将传递"8000%"给 SQL。

于 2013-06-04T18:41:50.670 回答
0

尝试字符串函数:

哪里(C.AREA_ID = 1 或左(C.AREA_ID,4)=“8000”)

于 2013-06-04T16:59:32.410 回答