SQLite NVARCHAR和NVARCHAR2之间的区别

时间:2015-08-18 11:47:18

标签: sqlite

我不知道SQLite NVARCHARNVARCHAR2列之间有什么区别。

我知道NVARCHAR是一个仅限Unicode的文本列,但是NVARCHAR2呢?

2 个答案:

答案 0 :(得分:5)

存在差异。在某种程度上...

这是事情: 正如Lasse V. Karlsen所说,SQLite不会对你提到的类型采取行动,也不会像NVARCHAR中那样通过传入的参数来限制长度(24)(但你可以检查约束以限制长度)。

那么为什么在SQLite Expert(和其他工具)中可以使用这些? 此信息将保存在数据库模式中(请检查https://www.sqlite.org/datatype3.html#affinityhttp://www.sqlite.org/pragma.html#pragma_table_info)因此,在创建SQLite数据库时是否需要设置这些信息,因为SQLite不会使用它?

是的,如果您将使用任何工具从架构生成代码!也许有人会要求你将数据库转移到MSSQL,然后有一些很好的工具可以使用模式,并将你的SQLite映射到MSSQL眨眼。或者你可能会使用一些.NET工具将表映射到POCO类,这些也可以使用模式映射到正确的类型,他们也将使用限制并将这些限制转移到列映射的属性上的数据注释中至。并且EntityFramework 7将为SQLite内置支持,并且它们的代码生成肯定会使用该模式。

答案 1 :(得分:4)

没有区别。

SQLite不能使用严格的数据类型,它有"存储类"。

如果您检查official documentation,您将找到此规则,其中五个用于确定从您指定的数据类型分配给列的存储类:

  1. 如果声明的列类型包含任何字符串" CHAR"," CLOB"或" TEXT"然后该列具有TEXT亲和力。请注意,VARCHAR类型包含字符串" CHAR"因此被分配了TEXT亲和力。
  2. 总共有5条规则,但规则2涵盖NVARCHARNVARCHAR2,两者都会将存储类TEXT分配给列。