我有一堆NVARCHAR列,我怀疑它们在VARCHAR列中包含完全可存储的数据。但是,我不能只是将列的类型更改为VARCHAR并希望达到最佳效果,所以我需要进行某种检查。
我想进行转换,因为数据是静态的(将来不会更改),并且对列进行了索引,并且与实际的(nvarchar)索引相比,它将从较小的(varchar)索引中受益。
如果我简单地说
ALTER TABLE TableName ALTER COLUMN columnName VARCHAR(200)
那么我不会收到错误或警告。Unicode数据将被截断/丢失。
我该如何检查?
为什么不将其放回那里查看丢失的数据呢?
假设column是nvarchar(200)开头
SELECT *
FROM TableName
WHERE columnName <> CAST(CAST(columnName AS varchar(200)) AS nvarchar(200))
问题内容: 我存储的名字和姓氏各不超过30个字符。哪个更好还是。 我已阅读,尽可能多的空间两倍占用比和用于国际化。 那么您建议我使用什么:或? 还请让我知道两者的性能。两者的性能相同还是不同?因为空间不是太大的问题。问题是表现。 问题答案: 基本上,nvarchar意味着您可以处理很多字母,而不仅仅是普通英语。从技术上讲,它意味着支持unicode,而不仅仅是ANSI。这意味着全角字符或大约是空格
问题内容: 所有,我都有一个大型(不可避免的)动态SQL查询。由于选择标准中字段的数量,包含动态SQL的字符串的长度超过4000个字符。现在,我知道为设置了最大4000 ,但是在Server Profiler中查看了已执行的SQL语句 似乎可以正常工作(!?),对于另一个也很大的查询,它抛出与此4000极限(!?)相关的错误,它基本上会在此4000极限之后修剪所有SQL,并给我留下语法错误。尽管在
总之,我有一个大型(不可避免的)动态SQL查询。由于选择条件中的字段数量,包含动态SQL的字符串增加了4000个字符。现在,我了解到的最大值设置为4000,但是查看在服务器探查器中执行的SQL语句 似乎有效(!?),对于另一个同样大的查询,它会抛出一个与4000限制(!?)相关的错误,它基本上会在4000个限制之后修剪所有SQL,并给我留下一个语法错误。尽管在探查器中出现了这一点,它还是完整地显示
问题内容: 仅仅是支持多字节字符吗?如果是这样的话,除了存储方面的问题,真的有什么要使用的varchars吗? 问题答案: 一列可以存储任何数据。甲varchar柱被限制为一个8位的代码页。有人认为varchar应该使用它,因为它占用更少的空间。我相信这不是正确的答案。代码页不兼容是一种痛苦,而Unicode是解决代码页问题的方法。如今,有了便宜的磁盘和内存,实际上没有理由再浪费时间浪费代码页了。
Microsoft SQL Server,数据库中的列定义为NVARCHAR,但在Java代码中定义为。 Hibernate失败,验证错误如下: 原因:org.hibernate.tool.schema.spi.schemaManagementException:模式验证:在表[Table_Name]中的列[Column_Name]中遇到错误的列类型;找到[nvarchar(types#nvarc
问题内容: 在为应用程序构建架构时遇到一个问题。 何时使用和。我的意思是应该使用它的确切用例。我也曾在网上冲浪,但我能够得到确切的答案。 任何人都可以提出一些确切的用例。 问题答案: 这是针对Microsoft SQL Server的 : 是 Unicode- 每个字符2个字节,因此最大。10亿个字符;可以处理东亚语,阿拉伯语,希伯来语,西里尔字母等字符。 就是 非Unicode -每个字符1个字