sql - 我们可以在 ColdFusion Query-of-Query 中使用 "Case"

标签 sql coldfusion coldfusion-2016 qoq

我正在申请 case在查询的 ColdFusion 查询中,但它抛出了一个错误。

查询:

<cfquery name="qEmployees1" dbtype="query">
    select (
        case 
          when ISNUMERIC(u.userdefined)=1
          then right('00000000'+u.userdefined,8)
          else userdefined
        end
      ) as hello
    from all_employees
    order by hello ASC
</cfquery>

错误信息:
Encountered "when" at line 3, column 22. Was expecting one of: 
    "AND" ... "BETWEEN" ... "IN" ... "IS" ... "LIKE" ... "NOT" ... 
    "OR" ... ")" ... "=" ... "." ... "!=" ... "#" ... "<>" ... 
    ">" ... ">=" ... "<" ... "<=" ... "+" ... "-" ... "*" ... 
    "||" ... "/" ... "**" ... "(" ...

最佳答案

更新:

最初的建议不会起作用,因为它只查看一行。你真的需要遍历你的 all_employees记录集并将其应用于每一行。

如果您只是将结果输出到页面,您可能无需 QoQ 即可实现此目的。像这样:

<cfoutput>
    <cfloop query="all_employees">
     <cfif isNumeric(all_employees.userdefined)>
      #Right('00000000'&all_employees.userdefined,8)#
     <cfelse>
      #all_employees.userdefined#
     <cfif>
    </cfloop>
</cfoutput>

原答案:

这样的事情怎么样?:
<cfquery name="qEmployees1" dbtype="query">
SELECT 
<cfif isNumeric([all_employees].[u.userdefined])>
  right('00000000'+u.userdefined,8) 
<cfelse>
 u.userdefined
</cfif> AS hello
FROM all_employees
ORDER by hello
</cfquery>

我尚未对此进行测试,但我认为在这种情况下,SQL 列名称中的点符号不会正常工作。无论如何,我将它括在方括号中。

关于sql - 我们可以在 ColdFusion Query-of-Query 中使用 "Case",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53117894/

相关文章:

coldfusion - 在本地主机上创建 Coldfusion 映射

ColdFusion 应用程序在 Application.cfc 上未提及应用程序名称

sql - 与 UNION 相比,INTERSECT 的优先级是否更高?

javascript - Firefox 和 Chrome 不从 coldfusion 加载脚本包括?

iis - ColdFusion RDS 和 NTLM 集成身份验证问题

sql - 尝试删除 SQL 字符串末尾的 bit.ly URL

java - 为什么 Hibernate 会为 @ManyToOne 关联的隐式连接生成 CROSS JOIN?

c# - Entity Framework 通过在没有选择的情况下将当前值增加一来更新一列

sql - 为什么我在执行 sql 脚本时收到 "Inconsistent ending lines"警告窗口?

coldfusion - 是否可以在应用程序之间共享 CFC?