diffknow

​ 不同数据库之间的表进行操作时候,容易出现排序规则冲突的问题,就需要用到Collate Database_Default。

​ Collate XXX 操作可以用在字段定义或使用时,它会将字段定义或转换成XXX 的排序规则格式。而Collate Database_Default 则会将字段定义或转换成当前数据库的默认排序规则,从而解决冲突。

1.情景一:

​ 比如在下面的代码中便使用了Collate Database_Default 来解决字段在equal操作中的排序规则冲突:

Insert into Security.Report (Name)
Select C.Path 
From SSRS.Catalog C 
Where C.Path Collate Database_Default Like @ReportPath + \'/%\'  And
	  C.Path Collate Database_Default Not In(Select Name From Security.Report R)

--或

SELECT 1 FROM Shipment_Package AS P 
INNER JOIN Shipment_Unit AS U ON P.CustomerID Collate Database_Default=U.CustomerID AND P.ShipmentNo Collate Database_Default=U.REFNM2 AND P.PalletID Collate Database_Default=U.PalletID 
WHERE P.CustomerID=\'TEA\' AND P.ShipmentNo=\'2021568752\' AND P.Shipmark=\'4AK8752\' AND U.QMS_BoxID=\'B1TH2ZZZ018G1BUS055731\'

--注:用在等号之前

2.情景二:

​ 当然,在创建临时表时若对字段定义加上Collate Database_Default ,也可以方便地解决潜在的排序规则冲突,比如上一节中提到的存储过程,只要做如下修改即可。

CREATE TABLE #TagsTable
(
    TagName NVARCHAR(64) COLLATE DATABASE_DEFAULT,
    TagLabel Nvachar(64) COLLATE DATABASE_DEFAULT
)   

分类:

技术点:

相关文章:

  • 2021-12-17
  • 2021-12-31
  • 2021-12-31
  • 2022-02-08
  • 2021-06-28
  • 2022-01-07
  • 2021-06-16
  • 2022-01-01
猜你喜欢
  • 2021-06-08
  • 2021-10-18
  • 2021-11-18
  • 2021-11-14
  • 2021-07-03
  • 2021-09-28
  • 2022-12-23
相关资源
相似解决方案