2016-06-24 26 views
2

當我試圖檢索這個數據,它的工作原理。Concat字符串到INT在SQL服務器.-但獲取錯誤

SELECT 
CONVERT(VARCHAR(10),BH.Doc_Date,(120))AS Doc_Date 
,LGH.Node_Code 
,LGH.Node_Name AS Location_Name 
,GD.Nationality 
,GD.Guest_Name 
,DBOGD.Name AS Gender 
,CAST(DATEDIFF(yy,GD.Birth_Day,getdate()) AS NVARCHAR(100)) + ' yrs' AS Age 
,'++' + CAST(GD.Mobile AS VARCHAR(100)) AS Mobile 
,GD.NIC_No 
,GD.Language 
FROM [booking].[Guest_Details] AS GD ... 

但是,當我試圖做這樣的,

SET @query = 'SELECT 
       CONVERT(VARCHAR(10) 
       ,BH.Doc_Date,(120))AS Doc_Date 
       ,LGH.Node_Code 
       ,LGH.Node_Name AS Location_Name 
       ,GD.Nationality 
       ,GD.Guest_Name 
       ,DBOGD.Name AS Gender 
       ,(CAST(DATEDIFF(yy,GD.Birth_Day,getdate()) AS NVARCHAR(100)) + " yrs") AS Age 
       ,"++" + CAST(GD.Mobile AS VARCHAR(100)) AS Mobile 
       ,GD.NIC_No 
       ,GD.Language 
       FROM [booking].[Guest_Details] AS GD ...' 

它不工作。我出現如下錯誤:

列名'yrs'無效。

無效的列名'++'。

+0

爲什麼有你切換到「語音標記,而不是「? –

+1

代替雙引號「」',使用兩個單引號'‘’' – Arulkumar

+0

我用單引號也試過。但它沒有奏效。 – TKrish

回答

1

試試這個代碼,希望這可以幫助你。

SET @query = 'SELECT 
       CONVERT(VARCHAR(10) 
       ,BH.Doc_Date,(120))AS Doc_Date 
       ,LGH.Node_Code 
       ,LGH.Node_Name AS Location_Name 
       ,GD.Nationality 
       ,GD.Guest_Name 
       ,DBOGD.Name AS Gender 
       ,(CAST(DATEDIFF(yy,GD.Birth_Day,getdate()) AS NVARCHAR(100)) + '' yrs'') AS Age 
       ,''++'' + CAST(GD.Mobile AS VARCHAR(100)) AS Mobile 
       ,GD.NIC_No 
       ,GD.Language 
       FROM [booking].[Guest_Details] AS GD ...' 
+0

工作。你能解釋一下嗎?比「」更好。順便說一句,非常感謝。 – TKrish

+1

在SQL Server中,雙引號僅作爲字符串值考慮,但單引號用於保存字符串值。這是你的代碼中的問題。 – DineshDB

+0

@DineshDB:在SQL Server中,雙引號只是考慮作爲字符串值..?這是不正確的 – TheGameiswar

2

22歲一部分是你造成issue..Modify它像下面

,DBOGD.Name AS Gender 
       ,(CAST(DATEDIFF(yy,GD.Birth_Day,getdate()) AS NVARCHAR(100)) + '' yrs'') AS Age 
       ,CAST(GD.Mobile AS VARCHAR(100)) AS Mobile 
       ,GD.NIC_No 
       ,GD.Language 
       FROM [booking].[Guest_Details] AS GD ...' 
+1

工作。你能解釋一下嗎?比「」更好。順便說一句,非常感謝。 – TKrish

+1

@TKrish:你在使用類似c#中的字符串.in sql你已經設置了單引號字符串,並且有一個冗餘的++。總是打印你的SQL,這樣你就可以自己發現錯誤 – TheGameiswar

1

代替雙引號"的,在這些地方" yrs""++"使用兩個單引號''

SET @query = 
    'SELECT 
    CONVERT(VARCHAR(10), BH.Doc_Date,(120)) AS Doc_Date 
    ,LGH.Node_Code 
    ,LGH.Node_Name AS Location_Name 
    ,GD.Nationality 
    ,GD.Guest_Name 
    ,DBOGD.Name AS Gender 
    ,(CAST(DATEDIFF(yy, GD.Birth_Day,getdate()) AS NVARCHAR(100)) + '' yrs'') AS Age -- in this line 
    ,''++'' + CAST(GD.Mobile AS VARCHAR(100)) AS Mobile -- and in this line 
    ,GD.NIC_No 
    ,GD.Language 
    FROM [booking].[Guest_Details] AS GD ...' 
+0

這很有效。你能解釋一下嗎?比「」更好。順便說一句,非常感謝。 – TKrish