SQL Server 错误“隐式转换,因为值的排序规则由于排序规则冲突而无法解析。”
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3861782/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQL Server error "Implicit conversion of because the collation of the value is unresolved due to a collation conflict."
提问by Azhar
I getting this error while developing stored procedure
我在开发存储过程时收到此错误
Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.
无法执行 varchar 值到 varchar 的隐式转换,因为值的排序规则由于排序规则冲突而无法解析。
statement is like this
声明是这样的
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' AS Place, 'Arizona' As State, Country FROM DEPT2
but If If do this it also give same error
但是如果这样做它也会给出同样的错误
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' COLLATE DATABASE_DEFAULT AS Place, 'Arizona' As State, Country FROM DEPT2
Actually this code is written by some one else and am just editing the code, do not know why he added COLLATE DATABASE_DEFAULT but If I remove it also gives the same error
实际上这段代码是由其他人编写的,我只是在编辑代码,不知道他为什么添加了 COLLATE DATABASE_DEFAULT 但如果我删除它也会出现同样的错误
Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict.
无法执行 varchar 值到 varchar 的隐式转换,因为值的排序规则由于排序规则冲突而无法解析。
回答by gbn
You'd need COLLATE in both places most likely.
您最有可能在两个地方都需要 COLLATE。
Select City COLLATE DATABASE_DEFAULT AS Place, State, Country FROM DEPT1
UNION ALL
Select '' COLLATE DATABASE_DEFAULT AS Place, 'Arizona' As State, Country FROM DEPT2
Edit: You may need it on every string if you get it in one places
编辑:如果你在一个地方得到它,你可能需要它在每个字符串上
Select
City COLLATE DATABASE_DEFAULT AS Place,
State COLLATE DATABASE_DEFAULT AS State,
Country COLLATE DATABASE_DEFAULT AS Country
FROM DEPT1
UNION ALL
Select
'' COLLATE DATABASE_DEFAULT,
'Arizona' COLLATE DATABASE_DEFAULT ,
Country COLLATE DATABASE_DEFAULT
FROM DEPT2
Edit2:
编辑2:
It happens because your column collation is probably different to your database collation. So "City" has one collation but string constants have another.
发生这种情况是因为您的列排序规则可能与您的数据库排序规则不同。所以“City”有一个排序规则,而字符串常量有另一个排序规则。
回答by Gennady Vanin Геннадий Ванин
ALTER TABLE DEPT1 and DEPT2 so that resulting definitions of tables do not contain any COLLATE
ALTER TABLE DEPT1 和 DEPT2,以便生成的表定义不包含任何 COLLATE