簡體   English   中英

在SQL中串聯主鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM