我有一个使用批量插入获取数据的临时表。但是,当我想要将临时表中的数据更新到普通表时,它会产生排序问题。我知道如何使用像来解决这个问题:在临时表列中设置排序规则的正确方法TSQL
UPDATE RegularTable
SET r.Column1 = t.ColumnA
FROM RegularTable r INNER JOIN #TEMP t ON
r.Column1 COLLATE DATABASE_DEFAULT =
t.ColumnA COLLATE DATABASE_DEFAULT
但是,有没有办法设置在临时表中的排序规则立刻让你不必使用整理中加入吗?例如:
CREATE TABLE #TEMP
Column1 varchar(255) COLLATE database_default,
Column2 varchar(60)
这是正确的编码,您是否必须为每个表格或每列设置一次排序? 如果在表格中设置了排序规则,是否可以从排序中排除排序规则?
感谢@Christian Hayter,所以如果我为每一列设置COLLATE database_default,我不必在连接中使用collate?出于好奇,是否有办法查看默认服务器排序规则设置是什么? – J3FFK
@ J3FFK:这是正确的。至于查看当前的排序规则,我确定有一个T-SQL函数来获取它,但通常我只是在Management Studio中调出数据库属性对话框。 :-) –
@ J3FFK:您可以从'master.sys.databases.collation_name'读取db排序规则 –