Каков наиболее эффективный способ закодировать эту часть инструкции T-SQL?

#sql #tsql #coldfusion

#sql #tsql #coldfusion

Вопрос:

Я использую SQL Server 2008 и ColdFusion 9.1.2.

У меня есть запрос, который содержит целочисленное поле. Мне нужно ввести целое число или нуль, а не ноль.

Прямо сейчас, это то, что у меня есть:

 <cfif LOCAL.MyValue eq "">
    NULL ,
<cfelse>
    <cfqueryparam cfsqltype="cf_sql_numeric" value="#LOCAL.MyValue#">,
</cfif>
  

Каков наилучший, или наиболее эффективный, или наиболее краткий способ закодировать это:

Ответ №1:

Все в одной строке:

 <cfqueryparam cfsqltype="cf_sql_numeric" value="#LOCAL.MyValue#" null="#NOT len(LOCAL.MyValue)#">
  

Если оно имеет длину, оно установит значение null = false.
Если у него нет длины, он установит null= true и проигнорирует то, что находится в value атрибуте.

Вы также можете захотеть добавить функцию trim() внутри функции len() (например, если пользователь может ввести пробел).

Комментарии:

1. Я не видел этого раньше, но это ИМЕННО то, что я искал. Итак, нулевая часть просто проверяет условие?

2. Вы также могли бы сделать null="#val(LOCAL.MyValue) EQ 0#" , который мог бы быть более читаемым и, кажется, немного лучше соответствует вашим условиям.