(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.
但是当我在单独的列中使用 FirstName
和 LastName
时它工作正常
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
中处理
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.
但是当我在单独的列中使用 FirstName
和 LastName
时它工作正常
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
中处理