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

coldfusion cfquery cfoutput

154 просмотра

1 ответ

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

Автор: Bato Dor Источник Размещён: 12.11.2019 09:23

Ответы (1)


3 плюса

Решение

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

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

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

В ColdFusion правильный способ сделать это - использовать со списком = true

<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-инъекций.

Автор: Chris Blackwell Размещён: 03.05.2012 08:00
Вопросы из категории :
32x32