2011-09-11 39 views
0

給出以下顯示的SQL語句。如果我改變了線以下(刪除「」在-2.jpg)然後我得到返回的完整鏈接我不明白在這行代碼在sql中結合文本我想?

, 'http://www.thesite.com/v/vspfiles/photos/' + IsNull(p.Vendor_PartNo,p.ProductCode) + '-2.jpg' AS image_link 

返回的「圖片鏈接」什麼(前綴和後綴),但顯然沒有「。」

, 'http://www.thesite.com/v/vspfiles/photos/' + IsNull(p.Vendor_PartNo,p.ProductCode) + '-2jpg' AS image_link 

什麼是錯的,我怎麼能包括「。」在後綴?

SELECT p.ProductCode AS id 
    , p.ProductName AS title 
    , 'Home & Garden > Household Appliance Accessories > Laundry Appliance Accessories' AS product_type 
    , IsNull(pe.SalePrice,pe.ProductPrice) AS price 
    , IsNull(pe.ProductManufacturer,'n/a') AS brand 
    , IsNull(pe.ProductCondition,'new') AS condition 
    , CONVERT(VARCHAR(10), (GETDATE() + 30),120) AS expiration_date 
    , pd.ProductDescriptionShort AS [stripHTML-description] 
    , 'http://www.thesite.com/v/vspfiles/photos/' + IsNull(p.Vendor_PartNo,p.ProductCode) + '-2.jpg' AS image_link 
    , 'http://www.thesite.asp?ProductCode=' + p.ProductCode + '&Click=1327' AS link 
    , CAST(pe.ProductWeight AS VARCHAR(20)) + ' lb' AS weight 
FROM Products p 
JOIN Products_Descriptions pd ON p.ProductID = pd.ProductID 
JOIN Products_Extended pe ON pd.ProductID = pe.ProductID 
WHERE (p.IsChildOfProductCode is NULL OR p.IsChildOfProductCode = ' 
     AND (p.HideProduct is NULL OR p.HideProduct <> 'Y') 
    AND pe.ProductPrice > 0 
ORDER BY p.ProductCode 
+0

字符串連接的供應商而異。你使用的是哪個數據庫? MySQL,PostgreSQL,SQLite3,Oracle,MS SQL Server? – SingleNegationElimination

+0

我相信服務器是MS SQL服務器 – user357034

回答

0

您試過這個嗎?

CONCAT('http://www.thesite.com/v/vspfiles/photos/', IsNull(p.Vendor_PartNo,p.ProductCode),'-2.jpg') AS image_link 
+0

是的,剛纔...這個錯誤CONCAT'不是一個公認的內置函數名稱。 – user357034

+0

是的,對不起。你說MS ... – Ivarpoiss

+0

Thx,但我真的不知道這是爲什麼我說「我相信」,如果我誤導了你,我很抱歉。 – user357034

1

在SQL-服務器(微軟),只需使用+號和CHAR(46),以獲得期

'http://www.thesiste/v/vspfiles/photos/'+ 
    isNull(p.vendor_partno,p.productCode)+'-2'+char(46)+'jpg' 

看看在HTTP:導致了問題,也許是服務器治療鏈接不同

'ht'+'tp://www.thesiste/v/vspfiles/photos/'+ 
    isNull(p.vendor_partno,p.productCode)+'-2'+char(46)+'jpg' 

也嘗試

replace('http:||www.thesiste|v|vspfiles|photos|','|','/')+ 
    isNull(p.vendor_partNo,p.productCode)+'-2'+char(46)+'jpg' 

的情況下斜線字符導致問題

看來斜槓字符被特殊處理。嘗試創建期初值的變量,並使用該...

DECLARE @URL varchar(200) 
SET @Url = 'http://www.thesiste/v/vspfiles/photos/' 

    @url + isNull(p.vendor_partno,p.productCode)+'-2'+char(46)+'jpg' 

甚至,試差,

'http:'+char(47)+char(47)+'www.thesiste'+char(47)+'v'+char(47)+'vspfiles'+ 
char(47)+'photos'+char(47)'+ 
     isNull(p.vendor_partno,p.productCode)+'-2'+char(46)+'jpg' 
+0

這就是我原來的工作,如上圖所示。 – user357034

+0

不好意思還是沒有去 – user357034

+2

確認您的SQL版本,我只是跑這在Microsoft SQL Server 2008和它的工作如預期... – Sparky

0

我沒有測試過這一點,但我的頭頂部,做你認爲你有一個數據類型的問題?

'http://www.thesite.com/v/vspfiles/photos/' + Cast(IsNull(p.Vendor_PartNo,p.ProductCode) AS varchar) + '-2.jpg' AS image_link 
+0

thx但不工作。 :(只是不明白爲什麼我不能組合兩個字符串 – user357034

+0

只是出於好奇,是否承認了演員功能? –

+0

是的它是...... – user357034