2009-08-14 100 views
6

我熟悉這種語法在SQL Server中,連接字符串在我的結果集:是否可以在查詢的ColdFusion查詢中執行字符串連接?

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 。

我可以寫一個新的存儲過程,是以圖像根作爲參數,並做了這一切,我可能會性能原因,但問題仍然嘮叨我。我還沒有找到可用的語法,所以我想知道是否有可能。

當我嘗試了上面,我得到以下錯誤:

Query Of Queries syntax error.
Encountered "from. Incorrect Select List, Incorrect select column,

有沒有人這樣做呢?有可能,可能是用另一種語法?

回答

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> 
+0

我碰到這個時候我把它轉換成存儲過程,但謝謝。 – 2009-08-14 17:21:12

+0

但是如何通過postgres數據庫連接相同的字符串 – 2013-01-07 10:55:39

+0

通過使用ANSI標準的連接運算符'||' – 2015-03-06 16:45:35

5

我想你提到的錯誤是由於在最後一串接逗號,在thumbnailImage結束。

只是我的$ 0.002

+0

同意100%。如果示例代碼是實際使用的代碼,則最後的逗號是交易斷路器。好點。 – jyoseph 2009-08-15 03:38:39

0

,甚至當你需要串連不是ColdFusion的水平,但在查詢本身:

在我的例子

,我已經一個,我想挖與查詢結果對象查詢查詢。查詢結果有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> 
+0

這聽起來像一個非常專業的案例。通常最好避免動態sql,因爲它可以將「數據庫」查詢暴露給sql注入。更不用說數據庫通常很難優化。 – Leigh 2017-04-08 15:13:16

相關問題