命名列时的排序规则冲突 [英] Collation conflict when naming columns

查看:70
本文介绍了命名列时的排序规则冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我遇到了一个(奇怪的?)排序规则冲突的问题(MSSQL2008)。



我的查询的简化示例:

  SELECT  X. * 
, Y.Field3
FROM SELECT Field1
,Field2
< span class =code-keyword> FROM TABLE1)X
LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1





这很好用(带X. *),但是当我专门写出表X的列时:



  SELECT   X.Field1 
,X.Field2

,Y。 Field3
FROM SELECT Field1
, Field2
FROM TABLE1)X
LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1





我收到排序规则冲突错误(无法解决UNION操作中SQL_Latin1_General_CP1_CI_AS和Finnish_Swedish_CI_AS之间的排序规则冲突)



有人可以向我解释如何具体命名列可能导致冲突,或者如何使用*解决这种冲突?



问候,

Johan

解决方案

替换:

  SELECT  X.Field1 
,X.Field2
,Y.Field3
FROM SELECT Field1
,Field2
FROM TABLE1)X
LEFT OUTER 加入 TABLE2 Y ON X.Field1 = Y.Field1



with:

  SELECT  X.Field1 
,X.Field2
,Y.Field3
< span class =code-keyword> FROM TABLE1 AS X LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1





您不需要子查询来加入两个表格!



其次,请看这里:整理优先顺序(Transact-SQL) [ ^ ]解决排序规则问题/问题。


Hi,

I am encountering a (weird?) problem with a collation conflict (MSSQL2008).

A simplified example of my query:

SELECT X.*
      ,Y.Field3
FROM (SELECT Field1
            ,Field2
      FROM TABLE1) X
      LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1



This works nicely (with the X.*), but when I specifically write out the columns of table X:

SELECT X.Field1
      ,X.Field2
      ,Y.Field3
FROM (SELECT Field1
            ,Field2
      FROM TABLE1) X
      LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1



I get a collation conflict error (Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Finnish_Swedish_CI_AS" in the UNION operation)

Can someone explain to me how specifically naming the columns can cause the conflict, or how using the * "solves" this conflict ?

Regards,
Johan

解决方案

Replace:

SELECT X.Field1
      ,X.Field2
      ,Y.Field3
FROM (SELECT Field1
            ,Field2
      FROM TABLE1) X
      LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1


with:

SELECT X.Field1
      ,X.Field2
      ,Y.Field3
FROM TABLE1 AS X LEFT OUTER JOIN TABLE2 Y ON X.Field1 = Y.Field1



You don't need subquery to join two tables!

Secondly, have a look here: Collation Precedence (Transact-SQL)[^] to resolve collation problem/issue.


这篇关于命名列时的排序规则冲突的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆