SQL表尾随空格导致错误

时间:2015-09-25 12:35:15

标签: sql sql-server tsql

我的C#代码出错,经过调试后发现 这是因为在表中输入时有一个尾随空格。 例如'aaa'

现在在我的C#代码中尝试将组合框的选定值设置为此(组合框作为值为'aaa'的项目,这将失败。

显然解决方案是修复DB'aaa'

现在我去DB

并执行此操作:

Select * from mytable 
where Name='aaa'

我得到姓名'aaa'

Select * from mytable 
where Name='aaa        '

我再次得到姓名'aaa'

Select len(name) from My table
where name ='aaa'

我得到3

我的问题是:如何通过查询表我知道它有'aaa'的额外空间?

2 个答案:

答案 0 :(得分:3)

SQL server len函数排除尾随空白。

考虑使用不修剪字符串的DATALENGTH(Transact-SQL)函数。

因此,您可以检查datalength(column) <> datalength(rtrim(column))是否包含尾随空格。

注意:如果处理unicode字符串,DATALENGTH将返回两倍的字符数。

答案 1 :(得分:1)

正如Giorgi Nakeuri所解释的那样,'a'和'a'被认为是平等的。但您可以使用LIKE轻松找到尾随空格:

select * from mytable where name like '% ';

以下是更新方法:

update mytable set name = rtrim(name) where name like '% ';