SQL 整理两张表,是否会永久改变排序规则?
SQL collating two tables, will it permanently change the collation?
例如,我试图在同一服务器的两个不同数据库中加入产品销售 table 和客户信息 table,我最终得到 "Cannot resolve the collation conflict between Latin1_General_CI_AS... "错误...
所以我一直在阅读有关整理 DATABASE_DEFAULT 将如何使两个 table 上的唯一标识符列匹配并连接在一起的信息......但是更改是临时的(仅在查询期间)还是实际上更改 2 table 的排序规则?
谢谢
SELECT V.PRODUCT, V.DESCRIPTION, A.NAMECUST, A.NAMECITY
FROM Warehouse.dbo.v AS V
INNER JOIN Maindata.dbo.Customerdata AS A
ON V.CUSTOMER_NUMBER = A.CUSTOMER_NUMBER COLLATE DATABASE_DEFAULT
当在查询中使用 COLLATE
(不是 CREATE/ALTER TABLE
、CREATE/ALTER INDEX
语句)时,它会覆盖 table-table(或数据库- default) 排序规则与仅用于该查询的排序规则,表示 "use this collation (comparison algorithm) when comparing values for this query only"。它不会影响磁盘上数据的底层表示或更改任何定义(这就是 ALTER
的用途)。
请注意,在查询中使用 COLLATE
通常会产生不好的代码味道:如果您的数据库一开始就使用正确的排序规则进行设计,那么就没有必要这样做了。
例如,我试图在同一服务器的两个不同数据库中加入产品销售 table 和客户信息 table,我最终得到 "Cannot resolve the collation conflict between Latin1_General_CI_AS... "错误... 所以我一直在阅读有关整理 DATABASE_DEFAULT 将如何使两个 table 上的唯一标识符列匹配并连接在一起的信息......但是更改是临时的(仅在查询期间)还是实际上更改 2 table 的排序规则? 谢谢
SELECT V.PRODUCT, V.DESCRIPTION, A.NAMECUST, A.NAMECITY
FROM Warehouse.dbo.v AS V
INNER JOIN Maindata.dbo.Customerdata AS A
ON V.CUSTOMER_NUMBER = A.CUSTOMER_NUMBER COLLATE DATABASE_DEFAULT
当在查询中使用 COLLATE
(不是 CREATE/ALTER TABLE
、CREATE/ALTER INDEX
语句)时,它会覆盖 table-table(或数据库- default) 排序规则与仅用于该查询的排序规则,表示 "use this collation (comparison algorithm) when comparing values for this query only"。它不会影响磁盘上数据的底层表示或更改任何定义(这就是 ALTER
的用途)。
请注意,在查询中使用 COLLATE
通常会产生不好的代码味道:如果您的数据库一开始就使用正确的排序规则进行设计,那么就没有必要这样做了。