使用 '?' SQL LIKE语句中的参数

初学者问题在这里…

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

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

例如,如果我的参数字段包含'8000',我需要find并返回任何相位代码在另一个表/列是LIKE'8000%'

我想知道如何在SQL中做到这一点,因为它看起来不像'?' 表示该参数可以包含在LIKE语句中。 (如果我写在4位数字,查询工作正常,但它不会让我在那里使用一个参数。)

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

这是我的完整代码:

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 

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

非常感谢!

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

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

你可以做

 and TP.PHASE_CODE like ? 

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

尝试string函数: 左 ?

WHERE(C.AREA_ID = 1或者Left(C.AREA_ID,4)=“8000”)