Обновление: не удовлетворен этим ответом, но я обнаружил, что если не передать структуру param, CF2016 будет игнорировать двоеточия Похоже, что CF2018 не имеет проблемы в любом случае (хотя я могу проверить это только с запросом на данный момент).
Мы создали sql запросы, которые не используют параметры запроса, проходящие через QueryExecute()
. Иногда я вижу ошибку Пробел не допускается после префикса параметра ':' и обнаруживается, что он вызван строковым литералом с двоеточием и пробелом. Например:
select 'test this: error'
Мне не удалось найти официальный способ избежать толстой кишки, и обычные побеги не сработали, но я нашел этот обходной путь ...
sqlstring = replace(sqlstring, ": ", ":'+' ", "all")
Однако это не учитывает другие ситуации, которые могут возникнуть, которые не будут строковым литералом, таким как имя столбца с двоеточием и пробелом, и, вероятно, многие другие, о которых я не могу думать в данный момент.
Есть ли официальный способ избежать двоеточия, переданного в QueryExecute
, не являющегося частью queryparam
?