标签: localization

为什么在带有越南语_CI_AI 排序规则的 SQL Server 上,'tr' 和 'tR' 之间的比较会失败?

越南语校对中的“tR”似乎有一些特别之处。知道的人能不能用简单的语言解释一下,不胜感激。此问题是在“越南语”整理的 SQL Server 上安装我们的产品期间发现的。模式中的一个表的名称中包含“tR”,但存储过程正在以所有小写的“tr”引用该表。而这个参考失败了。

我想这种情况类似于“?” 匹配其他排序规则中的“ss”。

这是一个复制品:

select  case when 'tr' = 'tR' COLLATE SQL_Latin1_General_CP1_CI_AS   then 'match' else 'no match' end 
select  case when 'tr' = 'tR' COLLATE Vietnamese_CI_AI   then 'match' else 'no match' end 
select  case when 'tr' = 'TR' COLLATE Vietnamese_CI_AI   then 'match' else 'no match' end 
Run Code Online (Sandbox Code Playgroud)

结果:

-----
match


--------
no match


-----
match
Run Code Online (Sandbox Code Playgroud)

第二个 T-SQL 产生不匹配。't' 和 'R' 的其他组合则不然。

sql-server collation unicode localization case-sensitive

14
推荐指数
1
解决办法
1032
查看次数

Postgres - 编码、整理和 CType

                                                        List of databases 
          Name           |  Owner   | Encoding |          Collate           |           Ctype            |
-------------------------+----------+----------+----------------------------+----------------------------|
 MyDatabase              | postgres | UTF8     | English_United States.1252 | English_United States.1252 |
Run Code Online (Sandbox Code Playgroud)

有人能解释一下编码、整理和 Ctype 是如何相互关联的吗?

我知道编码会影响信息的实际存储方式(即“A”需要一个字节还是多个字节,以及这些字节的值取决于编码)。

有人告诉我 collat​​e 指定比较字符的规则。如果要对一堆字符串进行排序,则整理类型将决定顺序。

我一直在努力寻找 Ctype 是什么;可能与大写和小写等概念有关(假设 'a' 知道 'A' 是大写形式?)。

我不明白(如在我的示例中)我如何拥有一个 UTF8 编码的数据库并使用英语 1252 的校对值。UTF8 有很多 win1252 没有的字符;如果我尝试对它们进行排序或比较会发生什么?我当前的设置是荒谬的......似乎我总是希望编码/整理/Ctype 同意?

postgresql encoding localization

11
推荐指数
1
解决办法
5075
查看次数

向 Postgres 数据库添加新的排序规则

我有这些整理:

postgres=# select * from pg_collat​​ion;
  姓名 | collnamespace | 领主| collencoding | 整理 | 类型  
------------+--------------+-----------+--------- -----+-------------+------------
 默认 | 11 | 10 | -1 | |
 C | 11 | 10 | -1 | C | C
 POSIX | 11 | 10 | -1 | POSIX | POSIX
 zh_CN | 11 | 10 | 6 | en_US.utf8 | en_US.utf8
 en_US.utf8 | 11 | 10 | 6 | en_US.utf8 | en_US.utf8
 ucs_basic | 11 | 10 | 6 | C …

postgresql collation localization

6
推荐指数
1
解决办法
2万
查看次数

带有 French_CI_AS 排序规则日期转换的 SQL Server

我有一个使用French_CI_AS排序规则的 SQL Server 法语安装。出于遗留原因,表列将数据存储VARCHAR为稍后转换为正确类型的数据,类似于 C++ 中的变体。

此列中的两行数据如下:

2020-10-12 22:54:40

2020-10-13 04:42:10
Run Code Online (Sandbox Code Playgroud)

DATETIME使用默认选项转换为时,第二个日期失败。该应用程序使用 ODBC 转义序列。SQL 等COLMVALUE >= {ts'2020-01-01 00:00:00'}失败并显示错误:

La Conversion d'un type de données nvarchar en type de données datetime a créé une valeur hors limites

我做了一个DBCC useroptions ,服务器的日期格式设置为dmy. 为什么第 2 行失败?看起来它试图将“13”解释为月份。如果格式是dmy,两个日期不应该都失败吗?

此外,有趣的是,在此服务器上,以下失败:

2020-10-12 22:54:40

2020-10-13 04:42:10
Run Code Online (Sandbox Code Playgroud)

但这有效:

DECLARE @datevar DATETIME = '2020-10-13 04:42:10';    
SELECT @datevar;  
Run Code Online (Sandbox Code Playgroud)

我知道这DATETIME2DATETIME. 但是,这里的两者似乎连解析都不一样。

collation type-conversion datetime localization sql-server-2016

4
推荐指数
1
解决办法
413
查看次数