我们可以在查询的ColdFusion查询中使用convert(int,Employeenumber)函数吗?

我们可以在查询的ColdFusion查询中使用convert(int,Employeenumber)函数吗?,coldfusion,coldfusion-11,qoq,Coldfusion,Coldfusion 11,Qoq,我们可以在查询功能的ColdFusion查询中使用convert(int,Employeenumber)函数吗?当我尝试它的时候,我得到了一些错误 我正在从存储过程中获取记录。当我使用convert()函数尝试使用query的查询重新查询这些记录时,它抛出了一个错误 实际上,该列的类型是varchar,我想将该列转换为int。然后我想按该列排序,但它不起作用。以下是QofQ: <cfquery name="qEmployees" dbtype="query"> Select

我们可以在查询功能的ColdFusion查询中使用
convert(int,Employeenumber)
函数吗?当我尝试它的时候,我得到了一些错误

我正在从存储过程中获取记录。当我使用
convert()
函数尝试使用query的查询重新查询这些记录时,它抛出了一个错误

实际上,该列的类型是
varchar
,我想将该列转换为
int
。然后我想按该列排序,但它不起作用。以下是QofQ:

<cfquery name="qEmployees" dbtype="query">
    Select convert(int,employeenumber) as employeenumber
    ...
</cfquery>

选择convert(int,employeenumber)作为employeenumber
...
来自对话:

CONVERT()
通常是依赖于语言的SQL,而
CAST()
是基本上做同样事情的更通用方法,但在这种情况下,QoQ引擎也选择使用它

重要的是要记住,ColdFusion Query of Query中的SQL版本与传统SQL不同。有很多事情是查询查询无法完成的,我绝对不建议将其用于大型初始数据集,因为它是内存中的操作


此外,此问题似乎不是数据类型转换问题。数据中的
NULL
似乎存在问题。ColdFusion,尤其是比ACF 2018版本更旧的版本,在
NULL
s上表现不佳。QoQ没有
ISNULL()
COALESCE()
功能,解决方法可能比它们的价值更麻烦。最简单的方法是修改原始的基本查询以返回所需的值

请在问题中包含错误消息。如果
convert()
不起作用,请尝试改用
cast()
。虽然
convert
被列为可使用的保留字之一,但这可能取决于您收到的错误消息。如果您指的是MS SQL Server的convert函数,则不可能,因为qoq是内存中类似SQL的功能,但它实际上并没有被发送到您的数据源,而是留在coldfusion应用服务器中。Coldfusion本质上并没有尝试实现第三方rdbms的所有功能。如果您无法通过QoQ实现所需的功能,则可能需要返回并创建一个新的存储过程。在SQL server上执行查询操作通常比通过CF强行执行查询容易得多。当数据库给你一个螺丝钉时,QoQ通常就像一把锤子。你应该能够
选择cast(employeenumber作为整数)作为employeenumber……按employeenumber排序
。但同样,主要的问题是你想用QoQ数据做什么?您最好在初始查询级别对其进行修复,而不是尝试对新结果进行QoQ。注意:如果您无法访问基础查询,QoQ可能会很有用,但1)它是sql语法的独特风格,2)如果您可以修改基本查询,则编辑查询以返回所需内容通常会容易得多。数据库不仅仅是保存数据的地方。它们还具有一些非常强大的功能,可以以您想要的方式检索您想要的数据。