2015-01-21 16 views
2
Select FirstName + ' ' + LastName from Members 

VARCHAR值的誤差隱式轉換給出錯誤:(選擇名字+「」 +議員的名字給予VARCHAR無法進行

Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.

但是,當我把FirstNameLastName在單獨的正常工作像

Select FirstName, LastName From Members 

列我要挑姓和名在一列

+0

嘗試使用CONCAT – 2015-01-21 07:02:56

+1

嘗試看這篇文章 http://stackoverflow.com/questions/3861782/sql-server-error-implicit-conversion-of-because-the-collat​​ion-of-the-value-is-u – 2015-01-21 07:16:02

+0

[此鏈接可能會幫助你正如你使用SQL 2008] [1] [1]:http://stackoverflow.com/questions/8547737/sql-server-2008 -express-concat-doesnt-exist – 2015-01-21 07:34:08

回答

1

看來你有相同的表內不同的排序規則 - 非常不尋常的

試試這個:

SELECT 
    FirstName COLLATE DATABASE_DEFAULT + ' ' 
    + LastName COLLATE DATABASE_DEFAULT AS FullName 
FROM Members 

如果一切正常,我建議你將排序規則更改爲FirstName和LastName,而不是Tha n糾正你的查詢。

這是如何改變整理的例子:

ALTER TABLE Members 
    ALTER COLUMN LastName 
    varchar(20) COLLATE DATABASE_DEFAULT NOT NULL 
+0

之後添加COLLATE DATABASE_DEFAULT來使用這個工作...但是整理了什麼?爲什麼它出現在這張桌子上? – Mike 2015-01-21 09:26:54

+0

@mike這裏是描述排序規則的[鏈接](http://stackoverflow.com/questions/4538732/what-does-collat​​ion-mean) – 2015-01-21 09:30:44

-1

試試這個

Select concat(concat(FirstName , ' '), LastName) as final from Members 
+0

'concat'不是公認的內置函數名稱。 – Mike 2015-01-21 07:04:56

+0

如果您使用的是SQL然後CONCAT使用SQL Server工作 – 2015-01-21 07:11:54

+0

IM 2008 – Mike 2015-01-21 07:13:57

0

試試這個

select CAST(FirstName AS VARCHAR) + ' ' + CAST(LastName AS VARCHAR)from Members 
or 
select CONVERT(VARCHAR(100),FirstName) + ' ' + CONVERT(VARCHAR(100),LastName)from Members 
+0

我試圖把它轉換提供了同樣的錯誤 – Mike 2015-01-21 07:08:04

+0

之前去什麼都不爲null這兩個字段都是varchar – Mike 2015-01-21 07:09:54

+0

表中firstname和lastname列的數據類型是什麼? – 2015-01-21 07:10:14

0

看是你的什麼的tempdb整理。你可以在屬性中看到它。

您必須添加到您的語句以更改該字段的排序臨時的此排序規則。

例如:

您的數據庫都有一個歸類「Latin1_General_CS_AS」,tempdb中的排序是「Latin1_General_CI_AS」你的發言有這個樣子,因爲動態SQL將在tempdb處理