问题标签 [nvarchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3836 浏览

sql-server - 从表格内容中修剪尾随空格

我在 SQL Server 2000 数据库中有一个带有 nvarchar(30) 字段“详细信息”的表。其中有大约 10,000 条记录,后面有空格。我需要一个查询来修剪所有行中的特定字段内容。我怎样才能做到这一点?

谢谢。

0 投票
6 回答
10598 浏览

sql - SQL Server - 更好的数据类型来存储大字符串值

我们有一个包含大约 200,000 条记录的数据库表。其中包括 3 个 ntext 列,其中包含长度为 4000-70000 的字符串数据。但是仅仅在表格上进行选择需要超过 1 分钟才能返回数据。甚至使用 where 条件和索引来为一个条件选择 12000 条记录需要 40 秒。

所以我们决定将这些数据类型更改为 nvarchar(max),但仍然没有注意到主要区别,因为它会将数据存储在行外,因为它太长了。有没有更好的方法可以提高我的桌子的性能?

0 投票
8 回答
162436 浏览

sql-server - nvarchar(max) 与 NText

在 SQL Server中使用nvarchar(max)vs.数据类型有哪些优点和缺点?NText我不需要向后兼容,所以nvarchar(max)旧的 SQL Server 版本不支持它很好。

编辑:显然,对于那些稍后搜索这些数据类型的人来说,这个问题也适用于TEXTand IMAGEvs. varchar(max)and 。varbinary(max)

0 投票
3 回答
4178 浏览

sql-server - 如何恢复在 SQL Server 中显示为的 Unicode 数据?

我在 SQL Server 中有一个数据库,其中包含一个需要包含 Unicode 数据的列(它包含来自世界各地的用户地址,例如开罗的 القاهرة‎)

此列是一个 nvarchar 列,具有数据库默认排序规则 (Latin1_General_CI_AS),但我注意到通过包含非英文字符的 SQL 语句插入其中的数据并显示为?????。

解决方案似乎是我没有使用 n 前缀,例如

代替:

我的印象是 Unicode 会自动转换为 nvarchar 列,我不需要这个前缀,但这似乎是不正确的。

问题是我在此列中仍有一些数据显示为 ??????? 在 SQL Server Management Studio 中,我不知道它是什么!

数据是否仍然存在,但字符编码不正确,无法显示但仍然可以挽救(如果是,我该如何恢复它?),还是永远消失了?

谢谢,

汤姆

0 投票
1 回答
1458 浏览

sql-server - 在 Java 中创建一个文件,以便使用 BCP 和 UTF-16 加载到 SQLServer 2005 中的 nvarchar 字段中

我想使用 BCP 使用加载器控制文件加载到带有 nvarchar 字段的 SQL Server 2005 表中。据我了解,SQL Server 2005 仅支持 UTF-16(我相信它是 UTF-16 LE)。该文件正在由 Java 程序输出。我目前设置的方式如下:

  1. XML 格式的 BCP 加载程序文件(使用以下命令创建 bcp test_table format nul -c -x -T -f test_table.xml -S server:)

  2. 使用以下代码编写输出的 Java 程序:

    /li>
  3. 然后使用以下 bcp 命令:
    bcp test_table in from_java.txt -T -f test_table.xml -S server -error error.txt

我在表中得到的是ÿþá. 并不是áááááLittle Endian, BOM

我尝试了几种改变参数的不同排列:

  • 更改生成加载程序控制文件的方式(使用 -n 表示本机数据而不是 -c 表示字符数据...我认为这可能与它有关,但我没有看到插入的数据有任何改进)
  • 尝试了几种不同形式的 UTF-16 编码,包括没有 BOM 的大端和小端,但无济于事
  • 尝试在文件中手动输出 BOM,因为我在某处读到 Microsoft 真正喜欢使用 BOM 信息的地方
  • 考虑尝试将文件输出为 UCS-2(而不是 UTF-16),因为那是(显然)BCP 实际读取文件的内容
  • 在 bcp 导入上尝试了 -w ,这确实有效,但不能与加载器格式文件结合使用(有没有办法将任何魔法告诉 BCP 文件以 UTF-16 编码到格式文件中?)
  • 如果我在 windows-1252 中输出文件并在加载文件时将该代码页指定为 bcp 的选项,我可以让它工作-c 1252(但我不想这样做,因为我会丢失信息,因为 UTF-16 是与 1252 相比可以表示的超集)

有没有人设法让 bcp 使用 UTF-16 数据和加载器格式配置文件加载到 nvarchar 字段中?

提前致谢,

-詹姆士

0 投票
1 回答
274 浏览

sql-server - SQL nvarchar 注意事项

您确定地址字段的 nvarchar 列大小的策略是什么?您总是使用 nvarchar(max) 还是固定的最大大小?

由于列太小,没有什么比数据集成中断更糟糕的了。使用 nvarchar(max) 与固定的最大 varchar 大小可能会产生什么影响?我知道索引变得太大但查询性能如何?还有什么要考虑的吗?

0 投票
6 回答
20938 浏览

sql-server - 在表中使用 VARCHAR(MAX) 有缺点吗?

这是我的困境。

基本上,我需要表格中的一列来容纳未知长度的字符。但我很好奇在 Sql Server 中使用列中的 VARCHAR(MAX) 或 NVARCHAR(MAX) 是否会出现性能问题,例如:“这次”我只需要存储 3 个字符,而且大多数时候我只需要存储 10 个字符。但是有一个很小的机会,它可能会在该列中达到几千个字符,甚至可能是一百万个,这是不可预测的。但是,我可以保证它不会超过 2GB 的限制。

我只是好奇是否存在任何性能问题,或者可能有更好的方法来解决这个问题。

0 投票
3 回答
1422 浏览

sql-server - SQL Server,varchar 数据到 nvarchar 数据

我有一个带有排序规则 Danish_Norwegian_CS_AS 和许多 varchar 列的数据库。我想将所有这些数据转换为 unicode,但还没有找到转换这些数据的方法。如果我理解正确的话,使用的编码是 UCS-2 little endian。

例如,我有一个包含“PÃ¥l-Trygve”的列,它可以使用 C# 轻松转换为“Pål-Trygve”,使用 Encoding.Default.GetString(Encoding.UTF8.GetBytes("PÃ¥l-Trygve")) ;

有没有办法在 Microsoft SQL Server 客户端中进行这种转换?

0 投票
2 回答
17013 浏览

sql-server - 与 NVARCHAR(MAX) 相比,SQL Server 中 XML 数据类型的性能损失是多少?

我有一个将保留日志条目的数据库。

日志表中的一列包含序列化(到 XML)对象,我团队中的一个人建议使用 XML 数据类型而不是 NVARCHAR(MAX)。该表将“永久”保存日志(将来可能会考虑归档一些非常旧的条目)。

我有点担心 CPU 开销,但我更担心 DB 会增长得更快(引用问题中的 FoxyBOA 在使用 XML 时得到了 70% 大的 DB)。

我已经阅读了这个问题 ,它给了我一些想法,但我对澄清数据库大小是增加还是减少特别感兴趣。

您能否分享您在这方面的见解/经验。

顺便提一句。我目前不需要依赖 SQL Server 中的 XML 功能(在特定情况下,我的优势几乎为零)。偶尔会提取日志条目,但我更喜欢使用 .NET 处理 XML(通过编写小型客户端或使用在 .NET 程序集中定义的函数)。

0 投票
2 回答
2184 浏览

sql-server - 将 nvarchar(4000) 转换为 nvarchar(max)

我们的 SQL Server (2005 & 2008) 数据库中有一些表,其列定义为 nvarchar(4000)。我们有时需要能够存储比这更多的数据并考虑使用 nvarchar(max) 代替。现在回答问题。

  1. 我们应该知道任何性能影响吗?
  2. 使用“alter table”进行实际迁移是否安全,还是有其他方法?
  3. 在我们转换之前我们还应该知道什么?

问候约翰