我試圖創建一個基於其他列一列,但它不斷給我的錯誤:串連問題
「錯誤轉換爲varchar浮動」我認爲這是試圖增加而不是串聯的。
我的發言是這樣的:
select column1 + ' ' + column2 + ' ' as ColumnDesired
什麼想法?
我試圖創建一個基於其他列一列,但它不斷給我的錯誤:串連問題
「錯誤轉換爲varchar浮動」我認爲這是試圖增加而不是串聯的。
我的發言是這樣的:
select column1 + ' ' + column2 + ' ' as ColumnDesired
什麼想法?
那麼,如果任何這些列是數字,它正試圖添加由於數據類型的優先順序。例如。 SELECT 4 + 'cow'
正在採取4
並嘗試將cow
以數學方式添加到它,因爲它試圖將所有表達式轉換爲具有最高先例的數據類型(在這種情況下爲INT
)。
因此,請使用CONVERT
來確保將所有數字和其他非字符串數據類型列明確視爲字符串。我猜32個字符應該足夠用於任何這些列,只要注意不要意外截斷超過32個字符的任何列。
SELECT ColumnDesired = CONVERT(VARCHAR(32), column1) + CONVERT(VARCHAR(32), column2)
FROM ...
您可能還需要應對NULL
小號
SELECT ColumnDesired = COALESCE(CONVERT(VARCHAR(32), column1), '')
+ COALESCE(CONVERT(VARCHAR(32), column2), '')
FROM ...
這確實奏效,所以謝謝。但是我不明白的是,我已經寫過類似以前的連接語句,並且sql server可以正常工作。 – user1991372 2013-03-11 21:07:37
@ user1991372一些連接序列將會正常 - 這些都是關於類型的。通常情況下,如果您要在網頁或應用程序中呈現數據,那麼在該處進行連接要安全得多(您正在處理單個值而不是集合,並且在顯示時將所有內容都視爲一個字符串)。 – 2013-03-11 21:11:17
如果您嘗試來連接的列,你可能需要的,一個是數字轉換:
select cast(column1 as varchar(50)) + ' ' + column2 + ' ' as ColumnDesired
或
select column1 + ' ' + cast(column2 as varchar(50)) + ' ' as ColumnDesired
其中一列是數字,使用CONVERT()。底線,從不依賴於隱式轉換,CONVERT()所有非(N)CHAR /(N)VARCHAR值。
這解釋了它。它通常必須使用隱式轉換。 – user1991372 2013-03-11 21:09:57
什麼是你的列上的數據類型? – Taryn 2013-03-11 21:01:29