我记得很久以前我在使用.NET中的角色时。从SQL数据库(char字段)获取的值存储在dot net char变量中:“a”(字符后面的一系列空格)。我的应用程序中的这个错误导致了问题。
任何人都可以解释这种情况何时发生,因为我似乎无法重现行为,我想避免我正在处理的应用程序中的错误。
答案 0 :(得分:3)
SQL Server中的CHAR
数据类型是固定大小字段。
因此,对于CHAR(2)
,如果只使用单个字符填充它,则会添加一个空格作为填充(以及更大的CHAR
字段的空格)。
从DB读取时,您也将获得这些空格。这不是错误。
您应该为数据库字段使用正确的数据类型 - 如果您有可变长度的文本,请使用VARCHAR
(或NVARCHAR
),而不是CHAR
。
答案 1 :(得分:2)
这不是错误。 SQL中的CHAR是固定长度,并使用空格填充列定义的长度。通过" dot net char变量",我假设您正在讨论字符串数据类型而不是实际的字符数组。
如果你想要没有填充的可变长度字符串,那么使用VARCHAR或NVARCHAR。