仅仅是nvarchar
支持多字节字符吗?如果是这样的话,除了存储方面的问题,真的有什么要使用的varchars吗?
一nvarchar
列可以存储任何Unicode
数据。甲varchar柱被限制为一个8位的代码页。有人认为varchar应该使用它,因为它占用更少的空间。我相信这不是正确的答案。代码页不兼容是一种痛苦,而Unicode是解决代码页问题的方法。如今,有了便宜的磁盘和内存,实际上没有理由再浪费时间浪费代码页了。
所有现代操作系统和开发平台在内部都使用Unicode
。通过使用nvarchar而不是varchar,您可以避免在每次从数据库读取或写入数据库时进行编码转换。转换需要时间,并且容易出错。从转换错误中恢复并不是一个简单的问题。
如果要与仅使用ASCII的应用程序接口,我仍然建议在数据库中使用Unicode。操作系统和数据库排序算法将与Unicode一起更好地工作。与其他系统接口时,Unicode避免了转换问题。您将为未来做准备。而且,即使享受完整的Unicode存储的某些好处,您也始终可以验证您必须维护的任何旧系统的数据都限制为7位ASCII。
问题内容: MySQL中的VARCHAR和CHAR有什么区别? 我正在尝试存储MD5哈希值。 问题答案: 是可变长度的。 是固定长度。 如果您的内容是固定大小,则使用可获得更好的效果。 有关详细说明,请参见CHAR和VARCHAR类型上的MySQL页面(请确保还阅读注释)。
问题内容: 我存储的名字和姓氏各不超过30个字符。哪个更好还是。 我已阅读,尽可能多的空间两倍占用比和用于国际化。 那么您建议我使用什么:或? 还请让我知道两者的性能。两者的性能相同还是不同?因为空间不是太大的问题。问题是表现。 问题答案: 基本上,nvarchar意味着您可以处理很多字母,而不仅仅是普通英语。从技术上讲,它意味着支持unicode,而不仅仅是ANSI。这意味着全角字符或大约是空格
问题内容: 所有,我都有一个大型(不可避免的)动态SQL查询。由于选择标准中字段的数量,包含动态SQL的字符串的长度超过4000个字符。现在,我知道为设置了最大4000 ,但是在Server Profiler中查看了已执行的SQL语句 似乎可以正常工作(!?),对于另一个也很大的查询,它抛出与此4000极限(!?)相关的错误,它基本上会在此4000极限之后修剪所有SQL,并给我留下语法错误。尽管在
总之,我有一个大型(不可避免的)动态SQL查询。由于选择条件中的字段数量,包含动态SQL的字符串增加了4000个字符。现在,我了解到的最大值设置为4000,但是查看在服务器探查器中执行的SQL语句 似乎有效(!?),对于另一个同样大的查询,它会抛出一个与4000限制(!?)相关的错误,它基本上会在4000个限制之后修剪所有SQL,并给我留下一个语法错误。尽管在探查器中出现了这一点,它还是完整地显示
char的长度是固定的,varchar的长度的可变的; char的效率比varchar的效率高; char占用空间比varchar大,char在查询时需要使用trim;
Microsoft SQL Server,数据库中的列定义为NVARCHAR,但在Java代码中定义为。 Hibernate失败,验证错误如下: 原因:org.hibernate.tool.schema.spi.schemaManagementException:模式验证:在表[Table_Name]中的列[Column_Name]中遇到错误的列类型;找到[nvarchar(types#nvarc