Вопрос по – определить список идентификаторов для сгруппированного элемента

1

у меня есть маленький вопрос, я просто не могу понять, в чем проблема и как я могу ее решить, например, у меня есть переменная Coldfusion#account_code#Во-первых, этот код выглядит так:100.001.001 (есть куча их конечно), и у меня есть некоторые значения для этой переменной, какsum(nettotal) и запрос я сгруппирован по этому#account_code#все, что я хочу, это установить список этих кодов, таким образом, я определяю список, например<cfset code_list='100.001.001,100.001.002'> и в запросе:account_code in (#code_list#) я тоже попробовал этотaccount_code in ('#code_list#') но вместо этого он выдает ошибку, он говорит неправильный синтаксис около «.001». насколько я понимаю, мне нужно как-то заменить эти точки и определить коды без них. Спасибо всем за помощь! я действительно ценю это!

Ваш Ответ

1   ответ
3

ваш вопрос действительно, как вы правильно используете предложение SQL IN.

Предложение SQL IN принимает список значений. Если эти значения являются числовыми, их не нужно заключать в кавычки, но ваши коды являются строками, поэтому каждое значение необходимо заключать в кавычки

select * from tbl
where id in ('100.001.001','100.001.002')

В ColdFusion правильным способом для этого является использование & lt; cfqueryparam & gt; со списком = правда

<cfset code_list='100.001.001,100.001.002'>
<cfquery name="qSomething" ...>
select * from tbl
where id in (
  <cfqueryparam list="true" 
    value="#code_list#"
    cfsqltype="cf_sql_varchar" />
)
</cfquery>

Это превращает ваш список в несколько параметров в вашем запросе, и если ваш code_list фактически передается с помощью переменной формы или URL-адреса, это помогает защитить вас от атак SQL-инъекций.

Да, точно! это помогло)) большое спасибо! Bato Dor

Похожие вопросы