cfscript и queryExecute (), использующие like вместо equals - PullRequest
2 голосов
/ 24 апреля 2019

Мне любопытно, если это правильный метод использования оператора like при использовании queryExecute () в функции cfscript.

if( len(arguments?.lastName) ){
    local.sqlWhere & = " AND t_lastname LIKE :lName";
    local.sqlParams.lName = { value : arguments.lastName & '%', cfsqltype:'cf_sql_varchar'};
};

Это просто добавляется как строка с & '%'?

1 Ответ

0 голосов
/ 24 апреля 2019

Я только что прошел через вашу проблему.В Coldfusion & Symbol всегда объединяются две строки.Таким образом, мы не могли использовать это.Здесь я написал пример кода для вас, пожалуйста, проверьте это.Я надеюсь, что это поможет в написании запроса на основе сценария.

local.MyQry = "SELECT * FROM Users WHERE 1=1 ";

Я использовал то же условие от вас.Не уверены в ваших условиях

if( len(arguments?.lastName) ){

    local.MyQry &= " AND Email like :email"
}

Здесь объедините запрос с предыдущим, если условие истинно.И упомянуто: (двоеточие, которое мы собираемся использовать в качестве queryparam)

local.qry = new Query( datasource = 'your DB name' , sql = Local.MyQry);

if( len(arguments?.lastName) ){
     local.qry.addParam( name="email", value="%#Arguments.email#%", cfsqltype="cf_sql_varchar");

}
return local.qry.execute(); 

Вы можете указать здесь символ % в зависимости от вашего сценария.Пример %#Arguments.email#.или %#Arguments.email#%

Надеюсь, это поможет вам больше.Спасибо

...