[英]Concate Primary Keys in SQL
我想直接在SQL
連接多個表的Primary Keys
。 我在下面的查詢中使用了三個主鍵,並將它們之間的連字符連接起來,但是SQL
跳過了連字符並求和了主鍵並得出一個單一值。
SELECT CID + '-' + RID + '-'+ CGID As [IdCombination] ...
其中CID,RID和CGID是三個SQL
表的Primary Keys
。
如何跳過查詢中的string
部分?
任何幫助將不勝感激。
更新
例如:CID,RID和CGID的值分別為3、4、3。 應該是3-4-3,但結果是10。
怎么了? 請記住, +
表示加法和字符串連接。 碰巧-
可以解釋為數字(如-0
),因此SQL Server傾向於將+
解釋為加號。
通常,當您執行這種類型的操作時,分隔符不能解釋為數字,而只會出現錯誤。 我很高興您在這種情況下沒有收到錯誤。
一種方法是將值顯式轉換為字符串:
SELECT CAST(CID as VARCHAR(255)) + '-' + CAST(RID + as VARCHAR(255)) '-'+ CAST(CGID as VARCHAR(255)) As [IdCombination]
在SQL Server 2012+中,您可以使用CONCAT()
更簡單地執行此操作:
SELECT CONCAT(CID, '-', RID, '-', 'CGID) As [IdCombination]
CONCAT()
知道所有內容都應該是字符串。
嘗試這個
SELECT 5 + '-' + 8
輸出為13。我必須承認,我沒想到這一點...
現在試試這個
SELECT CAST('-' AS INT)
結果為0。由於選擇以INT開頭,因此SQL Server嘗試對int值進行求和。 由於單個連字符可以隱式轉換為int,因此將返回值的總和...
其他人指出的解決方案是將列值轉換為字符串類型,或者使用CONCAT
我將需要查看輸出,但是我假設一些ID以int形式存儲並且正在計算中,因此您應該使用
SELECT Cast(CID as Varchar(50)) + '-' + Cast(RID as Varchar(50)) + '-'+ Cast(CGID as Varchar(50)) As [IdCombination]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.