C# 字符串和 VARCHAR 和 NVARCHAR

标签 c# sql-server

我很好奇 C# 如何解释/存储来自 SQL Server 的不同数据类型,然后将这些数据类型存储在 C# 字符串变量中:

示例:

假设我有一个变量来保存从数据库调用中检索到的字符串值:

public string TransactionId {get; set;}

如果出现以下情况,TransactionId 中的值是否会有所不同:

  1. SQL Server 中的数据类型是 VARCHAR(8 位)
  2. SQL Server 中的数据类型是 NVARCHAR(16 位)

只是想知道这两种不同的数据类型如何存储在 C# 字符串类型中。 C# 会存储一个 8 位的 VARCHAR 值和一个 16 位的 NVARCHAR 值吗?

最佳答案

它们将以几乎完全相同的字符串类型存储。唯一的区别是,如您所知,SQL 数据库中的 UTF-16 或更大格式会占用数据库中更多的物理存储空间。例如,如果您仅使用 ASCII/UTF-8(任何 8 位有限字符集),您应该存储为 varchar。 C# 中的字符串值将表示完全相同,因为 nvarchar 和 varchar 都可以在本地转换为字符串。如果使用扩展字符并将其存储在 nvarchar 中,您的字符串的唯一内容差异将是。这些不会存储在 varchar 中。

也只是提供信息; SQL 类型中的 var 表示大小将根据赋予它的内容动态变化 varchar(n) 其中 n 是它可以达到的最大大小。与 varbinary(n) 等的工作方式相同。

关于C# 字符串和 VARCHAR 和 NVARCHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676437/

相关文章:

c# - 十进制数字逗号样式

sql-server - Flyway 错误 - 当我运行 migrate 命令时。我得到 "Unable to calculate checksum"

sql唯一记录之谜

c# - 在 C# 接口(interface)中使用泛型

c# - 如何在 WPF 中使用 Application.Exit 事件?

c# - ViewModel没有通过POST方法传递回 Controller

c# - WPF C# 将标签绑定(bind)到包含自定义对象的 ObervableCollection 的 DataGrid

sql-server - T-SQL 疯狂函数结果

C# 'select count' sql 命令错误地从 sql server 返回零行

sql-server - SQL Server比较两个小数位不正确