Numeri c String Никогда не равны в CF / Lucee cfquery - PullRequest
2 голосов
/ 13 февраля 2020

У меня следующий запрос:

<CFQUERY name="roster_unmatched_warehouse" datasource="admin_public">
SELECT RTRIM(B.EMPL_NBR) as EMP_ID
FROM ADMIN_DB.PERSON_TBL_WHSE B
WHERE B.BRGNG_UNIT_NBR=<cfqueryparam cfsqltype="cf_sql_varchar" value="#selectroster#">
</CFQUERY>

, где для selectroster задано значение 3 di git цифра c.

Проблема, с которой я сталкиваюсь: что что бы ни случилось, если я использую cfqueryparam, равенство никогда не будет верным. Одним из примеров такого значения, которым может быть selectroster, является '214', поэтому я также попытался:

WHERE B.BRGNG_UNIT_NBR=<cfqueryparam cfsqltype="cf_sql_varchar" value="214">

, что, к сожалению, до сих пор не совпадает. Единственный успех, который у меня был на самом деле, был одной из следующих двух строк:

WHERE B.BRGNG_UNIT_NBR="214"
- or -
WHERE B.BRGNG_UNIT_NBR='#selectroster#'

Я выполнил cfdump запроса со всеми 4 методами, и вывод из запроса идентичен, но результатов нет. Я также поиграл с различными типами sqlty, удалив устаревшие префиксы (cf, cf_sql_), но безрезультатно. База данных Oracle, столбец - это тип char с размером данных 4 (в настоящее время мне интересно, в этом ли проблема, поскольку все они на самом деле 3-х git строк?)

Редактировать: Добавление обрезка вокруг B.BRGNG_UNIT_NBR работает, потому что значения на самом деле хранятся в базе данных как «214», а не «214». В связи с этим возникает вопрос: почему жесткое кодирование 214 без пробелов работает?

...