我正在使用cfspreadsheet从excel表中读取值,然后我查询查询以对日期字段进行排序,因为cfspreadsheet返回的所有字段都是"VarChar"类型.这是代码:
<cfspreadsheet action = "read" query = "mySpreadsheet" src = "mp.xls" sheet="1" rows="2-178">
<cfquery name="mySpreadsheet2" dbtype="query">
select
(CAST(date_field as DATE)) as mydate
from mySpreadsheet order by mydate
</cfquery>
Run Code Online (Sandbox Code Playgroud)
在电子表格中,日期为欧元格式dd/mm/yy.问题是查询查询中的CAST函数将'date_field'从varchar转换为日期,但美国日期类型(月份优先,后一天).
例如,excel date_field列包含此值01/07/2011(2011年7月1日,因为它是Eurodate)但在查询查询中它将转换为{ts'2011-01-07 00:00:00'}.
有没有办法在查询查询中使用CAST来生成欧式日期?要在oracle中解决这个问题,你可以这样做:to_date(date_field,'DD:MM:YY'),但我不知道如何解决这个问题.
我想count()
在ColdFusion Query对象中使用函数.
这是我的代码和测试:
<cfset x = querynew("id,name")>
<cfquery name="y" dbtype="query">
select count(*) as total from x
</cfquery>
<cfoutput>Test1: #y.total#</cfoutput>
<cfset temp = QueryAddRow(x)>
<cfset Temp = QuerySetCell(x, "id", 1)>
<cfset Temp = QuerySetCell(x, "Name", "Vikas")>
<cfquery name="y" dbtype="query">
select count(*) as total from x
</cfquery>
<cfoutput>Test2: #y.total#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我应该使用转换功能吗?如果total是[enpty string],那么结果应为0.或者还有其他最佳/正确的方法吗?
我希望能够向UNION查询未知数量的记录集.但是,在记录集名称中不允许执行查询查询点或括号时.
例如,这失败了:
<cfquery name="allRecs" dbtype="query">
SELECT * FROM recordset[1]
UNION
SELECT * FROM recordset[2]
</cfquery>
Run Code Online (Sandbox Code Playgroud)
使用动态变量名称,例如"recordset1"工作,但这是在一个函数中,需要变量范围,所以我不能动态地建立变量名称而不会在持久化对象中产生内存泄漏.
还有其他想法吗?
我有一个概念,即调用查询查询比来自数据库的查询更快,因为减速是在cf和db之间的通信中.这是真的.
这是否意味着循环中的QoQ是可接受的,而循环内的查询则不是.
我正在运行以下两个语句:
首先是A)它做了它需要做和工作的事情:
SELECT
itemColumn
,valueColumn
,label
FROM
rstCombinedChartData
UNION ALL
SELECT
itemColumn
,CAST(valueColumn AS INTEGER) AS valueColumn
,label
FROM
rstChartData
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果:
接下来我需要获取这些结果并在这种情况下返回每个值的itemcolumn总数是和否
i.e.
Yes 200
No 400
Run Code Online (Sandbox Code Playgroud)
B)这是我实现此目的的查询:
SELECT
itemColumn
,SUM(valueColumn) AS valueColumn
,label
FROM
rstCombinedChartData (this is above result set)
GROUP BY
label
,itemColumn
ORDER BY
label DESC
,itemColumn DESC
Run Code Online (Sandbox Code Playgroud)
但是,我得到以下不正确的结果:
什么在这里与查询B进行它应该是yes = x和no = x,而是我得到错误和所有总数?
CF功能:
<cffunction name="getAverageChartData" hint="I return the data required to render an average chart." returntype="array" output="false">
<cfargument name="surveyList" hint="I am a record set of …
Run Code Online (Sandbox Code Playgroud) CF_SQL_DECIMAL
和之间有什么细微差别CF_SQL_NUMERIC
?听起来他们都接受了一个名为的参数scale
(根据http://csis.pace.edu/~ctappert/cs615-02/support/Help/CFML_Language_Reference/lang_0277.htm).
我在查询查询(QoQ)和MS-SQL查询中都使用它们.
我发现ColdFusion的查询组件有一些非常奇怪的行为.当您使用此组件构建另一个ColdFusion查询的查询(QoQ)查询并order by
在多个列上使用时,order by
列表中的最后一列将添加到所选输出中.这似乎发生在CF9,10,11和2016,但不是Lucee.
/* Create an unsorted CF-query */
unsorted = QueryNew("col1,col2,col3,col4","VarChar,VarChar,Integer,VarChar");
for (a=10;a gte 1;a--){
QueryAddRow(unsorted);
QuerySetCell(unsorted,"col1","col1 #a#");
QuerySetCell(unsorted,"col2","col2 #a#");
QuerySetCell(unsorted,"col3","#a#");
QuerySetCell(unsorted,"col4","col4 #a#");
}
writeDump(var="#unsorted#");
/* Create a new CF query of query with the unsorted table */
sorted = new query(
dbtype = "query"
,unsorted = unsorted
,sql = "select [col1],[col2] from unsorted order by [col3], [col4] asc"
).execute().getresult();
/* The last column in the order by list will be displayed in …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的搜索查询:
<cfquery name="_qSearch" dbtype="Query">
SELECT
*
FROM MyQoQ
WHERE
DESCRIPTION LIKE '%#URL.searchString#%'
</cfquery>
Run Code Online (Sandbox Code Playgroud)
此查询适用于大多数值.但是,如果有人搜索类似的值"xxx[en"
,它会弹出错误消息The pattern of the LIKE conditional is malformed.
.
有没有办法解决这个问题,因为支架在CFQUERY中有特殊用途?
在使用查询查询时是否可以对变量进行范围调整?这有效
return queryExecute("
SELECT Title, Slug, Menu, MenuOrder
FROM qryResult
WHERE Menu = 'Y'
ORDER BY MenuOrder
",
[],
{dbtype = "query"}
);
Run Code Online (Sandbox Code Playgroud)
这不起作用.它抛出一个错误
return queryExecute("
SELECT Title, Slug, Menu, MenuOrder
FROM local.qryResult
WHERE Menu = 'Y'
ORDER BY MenuOrder
",
[],
{dbtype = "query"}
);
Run Code Online (Sandbox Code Playgroud)
消息
查询查询语法错误.
遇到"本地.StackTrace java.sql.SQLException:
查询查询语法错误.
遇到"本地.at coldfusion.sql.imq.jdbcStatement.parseSQL(jdbcStatement.java:590)at coldfusion.sql.imq.jdbcStatement.fetchResult(jdbcStatement.java:547)at ORDER BY MenuOrder",[],{dbtype ="query"} );
我已使用 Adobe 的最新update12更新了我的 Coldfusion 2018 服务器。一旦我更新了服务器,我就在 QoQ 中使用 ORDER BY为我的应用程序编写了一些 QoQ 。每当我在 QoQ 中使用 order by 时,结果数据都会有一些重复的列。
For my simple sample query as example,
<cfquery name="testRead" datasource="testmssql">
SELECT * FROM loginDetails
</cfquery>
<cfdump var="#testRead#" label="Main Query">
<cfquery name='readSub' dbtype="query">
SELECT userID, Username FROM testRead
ORDER BY userid DESC
</cfquery>
<cfdump var="#readSub#" label="QoQ Result" abort="true">
**Output:** Refer my image please.
Run Code Online (Sandbox Code Playgroud)
在这里您可以看到第二个 QoQ 转储有两个 userID 列。我不知道为什么我们把它放在这里以及它从哪里来。?如果我在 ORDER BY 列表中再添加一列,那么该列也会在结果查询中重复。例如,如果添加 ORDER BY userid DESC, userName,则查询转储查询具有 userID,userid,userName,username。
注意:在我的 update12 …