我记得很久以前,当我在.NET中处理字符的时候,从SQL数据库中获取的值(char字段)被存储在一个.net char变量中,即:“a__”(字符后面的一系列空格)。我的应用程序中的这个bug导致了问题。
有谁能解释一下什么时候发生这种情况,因为我似乎不能重新创建行为,我想避免我正在处理的应用程序中的bug。
发布于 2011-12-04 19:21:29
SQL Server中的CHAR
数据类型是固定大小的字段。
因此,对于CHAR(2)
,如果只用一个字符填充它,就会添加一个空格作为填充(对于较大的CHAR
字段,会添加更多的空格)。
当从数据库中读取时,您也将获得这些空格。这不是一个错误。
您应该为数据库字段使用正确的数据类型-如果您有可变长度的文本,请使用VARCHAR
(或NVARCHAR
),而不是CHAR
。
发布于 2011-12-04 19:20:12
这不是一个bug。SQL中的CHAR是固定长度,并用空格填充到列定义的长度。通过“.net char变量”,我假设您谈论的是一个字符串数据类型,而不是一个实际的字符数组。
如果您想要不带填充的可变长度字符串,请使用VARCHAR或NVARCHAR。
https://stackoverflow.com/questions/8377869
复制相似问题