问题说明 最近我执行一个SQL语句是报错 SELECT TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ExtendedProperty.Value AS ProgrammaticAlias FROM INFORMATION_SCHEMA.TABLES LEFT JOIN FN_LISTEXTENDEDPROPERTY('ProgrammaticAlias', 'user', 'dbo', 'table', default, default, default) AS ExtendedProperty ON INFORMATION_SCHEMA.TABLES.TABLE_NAME = ExtendedProperty.objName WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME != 'dtProperties' AND TABLE_CATALOG = 'entlibquickstarts'
查询报错:无法解决 equal to 操作的排序规则冲突。
解决方法 问题处在SQL的排序规则不同 先举一个简单的例子: USE tempdb GO CREATE TABLE TestTab ( id int, GreekCol nvarchar(10) collate greek_ci_as, LatinCol nvarchar(10) collate latin1_general_cs_as ) INSERT TestTab VALUES (1, N'A', N'a') 运行SELECT FROM TestTab WHERE GreekCol = LatinCol 会出现上面同样的错误,原因就是两个列的排序规则不同。 下面的查询是不会错,因为统一了排序规则 SELECT FROM TestTab WHERE GreekCol = LatinCol COLLATE greek_ci_as 而上面的解决方法是修改数据库的排序规则 ALTER DATABASE entlibquickstarts COLLATE Chinese_PRC_CI_AS