【问题标题】:Bug in LINQ to SQL with empty strings on databaseLINQ to SQL 中的错误,数据库中有空字符串
【发布时间】:2011-12-12 09:58:34
【问题描述】:

我多年来一直在使用 LINQ to SQL,但这是我第一次看到这种行为。

我有一个包含几列 (varchar(15)) 的数据库表,其中可能包含空字符串 ('')。我通过运行LEN(Column) 并检查结果为0 来验证这一点。

现在,当我从 LINQ2SQL 调用它时,它会返回带有一个包含单个空格 (string.Length == 1) 的字符串的对象字段。

我可以应用一些解决方法,比如在数据库上设置NULL 或修剪字符串,但我想知道是否有人以前遇到过这个问题,或者该错误是否已知(在 MS Connect 上报告)。如果没有,我会举报。

谢谢。

【问题讨论】:

  • 这是为了区分 NULL 值和空字符串吗?例如:在文件中如何存储 NULL 字符串(文件 len = 0)和空字符串(文件 len = 0)。在 OO 世界中,NULL 字符串和空字符串是两种不同的东西,而在数据世界中它们似乎是相同的

标签: c# .net tsql linq-to-sql string-length


【解决方案1】:

问题在于LEN 函数:

SELECT LEN(' ')

在 SQL Server 中返回 0;这是一个完整的 PITA。

但是

SELECT DATALENGTH(' ')

返回 1

【讨论】:

  • 非常感谢!我们的一位数据库人员也学到了一些新东西:)
  • 只是添加,LEN 忽略尾随空格。
  • 困扰我好几个月了!
  • 编辑:LEN 将忽略尾随空格
  • 对此的一种推论是SELECT LEN(LTRIM(CHAR(9)))返回1; CHAR(9) 是制表符;这使得修剪空白也成为一个巨大的 PITA!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多