Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 非联接T-SQL代码的排序规则冲突_Tsql - Fatal编程技术网

Tsql 非联接T-SQL代码的排序规则冲突

Tsql 非联接T-SQL代码的排序规则冲突,tsql,Tsql,我有以下代码,并收到以下错误: Msg 468, Level 16, State 9, Line 37 Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS_KS_WS" in the equal to operation. 我应该如何解决这个问题?我在网上找到的一切都与联接表有关 IF OBJECT_ID('SeanVault.dbo.

我有以下代码,并收到以下错误:

Msg 468, Level 16, State 9, Line 37
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS_KS_WS" in the equal to operation.
我应该如何解决这个问题?我在网上找到的一切都与联接表有关

   IF OBJECT_ID('SeanVault.dbo.TempVarIDs', 'U') IS NOT NULL 
      DROP TABLE SeanVault.dbo.TempVarIDs;
    Select VariableID, VariableName
    INTO SeanVault.dbo.TempVarIDs
    from Variable
            Where VariableName in (select VariableName from SeanVault.dbo.TempVarNames)

您的两列VariableID和VariableNames具有不同的排序规则。如果不控制数据模型,则可以绕过排序规则配置,例如,通过提供显式排序规则:

IF OBJECT_ID('SeanVault.dbo.TempVarIDs', 'U') IS NOT NULL 
    DROP TABLE SeanVault.dbo.TempVarIDs;
Select VariableID, VariableName
INTO SeanVault.dbo.TempVarIDs
from Variable
Where VariableName COLLATE SQL_Latin1_General_CP1_CI_AS in (select VariableName COLLATE SQL_Latin1_General_CP1_CI_AS from SeanVault.dbo.TempVarNames)
    ALTER TABLE Variable
      ALTER COLUMN VariableID COLLATE SQL_Latin1_General_CP1_CI_AS
GO

    ALTER TABLE TempVarNames
      ALTER COLUMN TempVarNames COLLATE SQL_Latin1_General_CP1_CI_AS
GO
长期解决方案是更改列的定义并添加所需的排序规则:

IF OBJECT_ID('SeanVault.dbo.TempVarIDs', 'U') IS NOT NULL 
    DROP TABLE SeanVault.dbo.TempVarIDs;
Select VariableID, VariableName
INTO SeanVault.dbo.TempVarIDs
from Variable
Where VariableName COLLATE SQL_Latin1_General_CP1_CI_AS in (select VariableName COLLATE SQL_Latin1_General_CP1_CI_AS from SeanVault.dbo.TempVarNames)
    ALTER TABLE Variable
      ALTER COLUMN VariableID COLLATE SQL_Latin1_General_CP1_CI_AS
GO

    ALTER TABLE TempVarNames
      ALTER COLUMN TempVarNames COLLATE SQL_Latin1_General_CP1_CI_AS
GO

其中VariableName在SeanVault.dbo.TempVarNames中选择VariableName整理SQL\u Latin1\u General\u CP1\u CI_AS@Lamak为什么这是一个评论而不是答案?@iamdave,因为只有代码的答案不是一个好的答案……而且我有点累了,所以我不想写什么才能让它成为一个完美的答案!谢谢你,成功了。这些表是临时使用的,在过程运行后会被删除,所以我不认为我会走另一条路线。