(选择FirstName +'' + LastName from Members to error错误无法将varchar值隐式转换为varchar

时间:2015-01-21 06:56:13

标签: sql sql-server sql-server-2008 correlated-subquery

Select FirstName + ' ' + LastName from Members 

给出错误:

  

无法执行varchar值到varchar的隐式转换,因为由于排序规则冲突而无法解析值的排序规则。

但是,当我将FirstNameLastName放在像

这样的单独列中时,它可以正常工作
Select FirstName, LastName From Members

我想在一列中选择名字和姓氏

4 个答案:

答案 0 :(得分:1)

似乎你在同一张表中有不同的排序规则 - 非常不寻常

试试这个:

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

如果这样做,我建议您将排序规则更改为FirstName和LastName相同,而不是更正您的查询。

这是如何更改排序规则的示例:

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

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分:0)

查看tempdb上的排序规则。你可以在属性中看到它。

您必须将此排序规则添加到语句中以更改临时字段的排序规则。

示例:

您的数据库有一个排序规则" Latin1_General_CS_AS",tempdb的排序规则是" Latin1_General_CI_AS"您的语句必须如下所示,因为动态SQL将在tempdb中处理

答案 3 :(得分:-1)

试试这个

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