0

我需要更好地理解用户文本输入到 win 应用程序/asp.net 应用程序,以及存储在 SQLServer 中的数据的适当字段大小应该是多少。

如果一切都是 ASCII,这似乎很简单(每个字符 1 个字节),但我想我真的不明白当用户将文本放入输入字段时发生了什么。如果输入是Unicode,那么(通常)每个字符有2个字节(?),如果我知道文本输入不能超过5个字符,那么SQL列应该是varchar(10)???我如何知道输入应该是 ANSI 还是 Unicode?

希望这是有道理的。就网页或 win 应用程序如何确定数据的编码方式而言,这是我从未完全理解的事情。

4

2 回答 2

4

创建列时,您指定需要存储的字符数,无论它是否为 Unicode。最多需要 5 个字符?然后是VARCHAR(5)or NVARCHAR(5),这取决于您是否真的需要Unicode - 这是商业讨论,而不是技术讨论。2 个字节与列定义无关——这与存储大小有关。因此,如果完全填充, aVARCHAR(5)将占用 5 个字节,如果完全填充,则 aNVARCHAR(5)将占用 10 个字节。定义列时不必担心那些实现细节;但是,您应该确保在做出选择之前需要 Unicode,因为无缘无故将空间要求加倍是浪费。

(忽略关于此类列是否应为CHAR/NCHAR、空字节开销等的参数)

于 2013-10-24T15:27:17.773 回答
2

SQL 列不是由字节大小而是由字符大小设置的。一列varchar(10)将接受 10 个字符。如果您要使用 Unicode 输入,最好设置nvarchar(10)它仍然需要 10 个字符,但它将允许所有 Unicode 输入到该列。也是如此ntext text nchar char。可以在http://technet.microsoft.com/en-us/library/ms187752.aspx找到一个了解 SQL 数据类型的好 MSDN 页面。至于在 ASP.NET 站点上的文本框中输入什么内容,可以在该文本框中输入任何内容,这取决于您通过代码来强制执行您想要输入的内容的规则。

于 2013-10-24T15:28:26.577 回答