我熟悉SQL Server中的这种语法,以便在我的结果集中连接字符串:
SELECT 'foo' + bar AS SomeCol
FROM SomeTable
我想在ColdFusion查询查询中做类似的事情:
<cfquery name="qOptimize" dbtype="query">
select
image_id AS imageId,
'#variables.img_root#' + image_id + '.' + image_ext AS fullImage,
'#variables.img_root#' + image_id + 't.' + image_ext AS thumbnailImage,
from qLookup
order by imageId asc
</cfquery>
这是Flex应用程序所使用的服务的一部分,所以我在返回到客户端之前优化应用程序中其他地方使用的存储过程的结果 - 剥离未使用的列,并从一些动态编译图像URL路径信息。
我可以编写一个新的存储过程,它将图像根作为参数并完成所有这些,我可能 出于性能原因,但问题是还在唠叨我我还没有找到一种有效的语法,所以我想知道它是否可行。
当我尝试上述操作时,出现以下错误:
查询查询语法错误。
遇到“来自。错误的选择列表,错误的选择列,
有人这样做过吗?有可能,或许还有另一种语法吗?
答案 0 :(得分:11)
是的,这是可能的。我认为问题是image_id很可能是一个数值。如果你把它作为varchar投射,那么应该没问题。
<cfquery name="qOptimize" dbtype="query">
select
image_id AS imageId,
'#variables.img_root#' + cast(image_id as varchar) + '.' + image_ext AS fullImage,
'#variables.img_root#' + cast(image_id as varchar) + 't.' + image_ext AS thumbnailImage
from qLookup
order by imageId asc
</cfquery>
答案 1 :(得分:5)
我认为您提到的错误是由于最后一次连接的逗号,在thumbnailImage的末尾。
只需我的$ 0.002
答案 2 :(得分:1)
或甚至当您需要连接而不是在coldfusion级别但在查询本身时:
在我的例子中,我已经有了一个查询结果对象,我想深入查询查询。查询结果tobject有10列数据和1000行,列名是c1,c2,c3,c4,c5,......
<cfset dbzeilerest = "2 4 - 3"><!--- beg qoq to concatenate those columns --->
<cfset sqlcodehere = "(">
<cfloop list="#dbzeilerest#" delimiters="," index="t">
<cfif val(t) GT 0>
<cfset sqlcodehere = sqlcodehere & "C" & val(t) & " || ">
<cfelse>
<cfset sqlcodehere = sqlcodehere & "'" & t & "' || ">
</cfif>
<!--- concat in coldfusion sql qoq:
( C2 || ' ' || C4 || ' ' || '-' || ' ' || C3 ) as combii --->
</cfloop>
<cfset sqlcodehere = sqlcodehere & " '') as combii">
<cfquery name="dbtexttemp2" dbtype="query">
SELECT DISTINCT #PreserveSingleQuotes(sqlcodehere )# FROM dbtexttemplistequery
</cfquery>