Вопрос для начинающего здесь ...Использование '?' Параметр в SQL LIKE Statement
Я обращаюсь к базе данных Firebird через Microsoft Query в Excel.
У меня есть поле параметров в Excel, которое содержит 4-значное число. Одна из моих таблиц DB имеет столбец (TP.PHASE_CODE), содержащий 9-значный код фазы, и мне нужно вернуть любой из этих 9-значных кодов, которые начинаются с 4-значного кода, указанного в качестве параметра.
Например, если мое поле параметр содержит «8000», мне нужно найти и вернуть любой код фазы в другой таблице/столбце, 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
Любые идеи о альтернативных способов выполнения этого запроса?
Большое спасибо!
Привет, спасибо, кажется, что Firebird ограничен, насколько строковые функции идут, но прежде чем вы ответили, я нашел функцию «подстроки», которая выполнила задание следующим образом: «substring (TP.PHASE_CODE от 1 до 4 знак равно (Ваше решение намного проще!) Еще раз спасибо. – user2452582
@ user2452582 Я не совсем уверен, какие строковые функции связаны с вашим исходным вопросом. Вы можете найти список внутренних функций в http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25-intfunc.html –
Привет, Марк, поскольку я не мог найти решение (||) что вы мне дали, я искал строковые функции для извлечения первых 4 цифр, которые мне нужно сравнить с параметром, чтобы ... – user2452582