(Select FirstName + ' ' + 来自 Members 的 LastName 给出错误无法执行 varchar 值到 varchar 的隐式转换

(Select FirstName + ' ' + LastName from Members gives error Implicit conversion of varchar value to varchar cannot be performed

Select FirstName + ' ' + LastName from Members 

给出错误:

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

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

试试这个

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

试试这个

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

您似乎在同一个 table 中有不同的排序规则 - 非常不寻常

试试这个:

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

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

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

示例:

你的数据库有一个排序规则 "Latin1_General_CS_AS",tempdb 的排序规则是 "Latin1_General_CI_AS" 你的语句必须像这样,因为动态 SQL 将在 tempdb

中处理