相关疑难解决方法(0)

什么时候必须在SQL Server中使用NVARCHAR/NCHAR而不是VARCHAR/CHAR?

我们必须使用Unicode类型时是否有规则?

我已经看到大多数欧洲语言(德语,意大利语,英语......)在VARCHAR列中的同一数据库中都很好.

我正在寻找类似的东西:

  1. 如果你有中文 - >使用NVARCHAR
  2. 如果你有德语和阿拉伯语 - >使用NVARCHAR

那么服务器/数据库的整理呢?

我不想像这里建议的一样使用NVARCHAR.varchar 和nvarchar SQL Server数据类型之间的主要性能差异是什么?

sql-server unicode nvarchar collation

65
推荐指数
4
解决办法
10万
查看次数

SQL Server:设置字符集(不是整理)

在SQL Server中创建表时如何设置字段的默认字符集?在MySQL中,我们这样做:

CREATE TABLE tableName (
    name VARCHAR(128) CHARACTER SET utf8
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)

请注意,我在这里设置了两次字符集.这是多余的,我添加了两种方式来演示.

我还设置了排序规则,以证明排序规则是不同的.我不是要求设置整理.大多数 关于SQL Server中的字符集和编码的问题都通过整理来回答,这不是一回事.

sql-server collation character-encoding character-set

13
推荐指数
2
解决办法
4万
查看次数

对于nvarchar(Unicode)列,COLLATIONS有什么意义?

IVe阅读了很多关于此的内容.

还有一些问题:

我不是在谈论区分大小写......

  • 如果我有一个char(?例如)并且他存储在nvarchar - 它可以容纳任何东西,为什么我需要collation在这里?

  • 如果我是"FaceBook"并且我需要能够存储语言中的all字符all,那么校对和我的nvarchar列之间的关系是什么?

提前致谢.

sql-server unicode nvarchar collation sql-server-2008

13
推荐指数
3
解决办法
7395
查看次数

NVarchar、Bin 整理、Bin2 整理有什么区别?

所有 3 个选项都区分大小写和重音,并支持 Unicode。根据文档:

  1. NVarchar 根据“相关语言或字母表的字典”对数据进行排序和比较 (?)

  2. Bin 根据“位模式”(?)对数据进行排序和比较

  3. Bin2根据“Unicode数据的Unicode代码点”对数据进行排序和比较(?)

把复杂的事情简单化,我能不能说Bin是NVarchar的改进,Bin2是Bin的改进;除非我仅限于向后兼容,否则总是建议使用 Bin2 或至少使用 Bin 以享受更好的性能?

================================================== ======================== 我会再次尝试解释我自己。

看一看:

If Object_ID('words2','U') Is Not Null Drop Table words2;
Create  Table words2(word1 NVarchar(20),
                    word2 NVarchar(20) Collate Cyrillic_General_BIN,
                    word3 NVarchar(20) Collate Cyrillic_General_BIN2);

Insert
Into    words2
Values  (N'???????',N'???????',N'???????'),
        (N'?????????',N'?????????',N'?????????'),
        (N'?????',N'?????',N'?????'),
        (N'???',N'???',N'???');
Select * From words2;
Run Code Online (Sandbox Code Playgroud)

所有 3 个选项都支持各种字母表,无论是什么排序规则。

问题是 - 3 个选项之间的实际区别是什么?假设我想以不同的字母存储私人姓名,我可以使用哪个选项?我想我将不得不找到特定的名称(选择...从...在哪里...),订单名称(选择...从...订购...)。

sql-server unicode collation

5
推荐指数
2
解决办法
3939
查看次数

RODBC:chars和numerics积极转换(有/无asis)

/sf/answers/2329882481/相关,我发现从SQL Server(2014)中提取数据的行为不一致.

library(RODBC)
sqlQuery(.conn, "CREATE TABLE r2test ( [mychar] [NVARCHAR](16), [mynum] [FLOAT])")
# character(0)
sqlQuery(.conn, "INSERT INTO r2test (mychar,mynum) VALUES ('1',3.141593),('2',6.283185)")
character(0)
str(sqlQuery(.conn, "SELECT * FROM r2test", stringsAsFactors = FALSE))
# 'data.frame': 2 obs. of  2 variables:
#  $ mychar: int  1 2
#  $ mynum : num  3.14 6.28
Run Code Online (Sandbox Code Playgroud)

在该示例中,我们看到了不期望的行为:mychar内部转换为整数的字符.根据前面提到的SO答案,该as.is选项会使这个失败,但是还有一个不幸的副作用,即强制将十进制表示的浮点数转换为字符串:

str(sqlQuery(.conn, "SELECT * FROM r2test", stringsAsFactors = FALSE, as.is = TRUE))
# 'data.frame': 2 obs. of  2 variables:
#  $ mychar: chr  "1" …
Run Code Online (Sandbox Code Playgroud)

r rodbc

5
推荐指数
1
解决办法
2558
查看次数