为啥我的字符串值在插入 SQL 数据库时会累积空格?

Posted

技术标签:

【中文标题】为啥我的字符串值在插入 SQL 数据库时会累积空格?【英文标题】:Why is my string value accumulating empty spaces when inserting into SQL database?为什么我的字符串值在插入 SQL 数据库时会累积空格? 【发布时间】:2011-11-13 07:51:20 【问题描述】:

我有一个广泛的表单插入到 SQL 数据库中,然后我从管理页面请求所有数据并将其插入回管理页面上的表单中。在最初插入数据库期间,这个特定的下拉列表(就像其他下拉列表一样)正在插入选定的数据。但是当我进入数据库时​​,在插入所选值后,只有这个特定的单元格会得到 3 到 4 个空白。这导致布尔比较在尝试插入管理员表单时以 false 响应。即 ("Primary" == "Primary") = false。所以下拉列表没有更新。

什么会导致 SQL 行添加这些空格?所有 html 下拉列表的代码都是相同的,后面有代码。而且 SQL 数据库的结构似乎自始至终都是相同的。

附言为了撤消我试图在后面的代码中使用 .Trim() 的问题。但这并没有什么不同。似乎 SQL 数据库在插入时添加了空格。

【问题讨论】:

什么代码?列的类型是什么? SQL 是什么? "SQL 数据库似乎在插入时添加了空格。"通过直接通过您的 dbms 接口执行正确的 SQL 来测试它,而不是通过代码传递查询。 WHAT 数据库和哪个版本? SQL 只是结构化查询语言 - 许多 数据库系统使用的语言 - SQLNOT 数据库产品...这样的东西通常是特定于供应商的 - 所以我们真的需要知道您使用的是什么数据库系统.... 【参考方案1】:

您添加空格的列是否恰好是CHARNCHAR 而不是VARCHARNVARCHAR?例如,如果您的列数据类型是CHAR(10),并且您在其中插入了一个“Hello”,那么该列中将始终有 10 个字符,因此在“Hello”之后将添加 5 个空白字符。但是,如果您使用VARCHAR(10),则不会发生这种情况。

【讨论】:

NCHAR 而不是NVARCHAR 嗯,@smoak 这很有趣。这一切都是作为 varchar(50) 完成的。我注意到我至少做了一个 varchar(100)。所以他们都不应该添加额外的字符......但你知道,这很有趣。因为它正在添加最多 10 个字符。如果选择了 'Primary',它会插入为 'Primary'(带有 3 个空格)如果选择了 'Spouse' 它会添加 4 个空格......全部加到 10。我想知道是否一路走来,我把它当作char,现在数据库没有正确更新.. 好吧。谢谢你的帮助,兄弟。交易是我的 LINQ to SQL 没有用 SQL 数据库字段设置的内容进行更新。我假设我最初不小心将其设置为 char 10,然后对其进行了更改。但是 LINQ 没有更新。现在已经修好了。 :)

以上是关于为啥我的字符串值在插入 SQL 数据库时会累积空格?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 useRef 值在它是整数时会动态更新,但在它是字符串时会存储先前的值?

mysql 为啥有些字段首字母是大写的在插入时会变成小写?

为啥我的自定义 UICollectionViewLayout 在单元格之间添加空格时会抛出错误?

为啥插入子视图时会出现黑屏?

为啥我的SQL SERVER2005在连接ODBC时会出现连接超时过期呢

为啥我的 QString 没有得到 TextField 的值?