当前位置: 代码迷 >> 综合 >> COLLATE SQL_Latin1_General_CP1_CI_AS 是干嘛用的
  详细解决方案

COLLATE SQL_Latin1_General_CP1_CI_AS 是干嘛用的

热度:81   发布时间:2023-10-30 16:25:03.0

今天看公司代码发现添加某列时,出现了
COLLATE SQL_Latin1_General_CP1_CI_AS NULL
如下:

CREATE TABLE [enstep].[DealModelHeaderValues]
(
[DealModelHeaderValueUID] [bigint] NOT NULL,
[ModelCompositeOrderSEQ] [int] NULL,
[TimeZoneUID] [smallint] NOT NULL,
[PriceRoundingMethod] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[NetValueUnitRoundingMethod] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)ALTER TABLE [ENSTEP].[DealModelHeaderValues] ADD CurveAverageRoundingMethod  [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS  NULL

刚开始一脸懵,查了相关资料
相关解答如下:

  • COLLATE: 大概就是校对规则的意思
  • latin1: 让服务器使用charset latin 1处理字符串,基本上是ascii
  • CI: 不区分大小写的比较,所以’ABC’将等于’abc’ / li>
  • AS: 区分音符,因此’ü’不等于’u’
ALTER TABLE [ENSTEP].[DealModelHeaderValues] ADD CurveAverageRoundingMethod  [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS  NULL

所以上面这个ALTER的意思就是,给表DealModelHeaderValues新增一列CurveAverageRoundingMethod ,且当sql查询器查询该列时使用charset latin 1处理字符串,且不区分大小写的比较,并区分音符。