2011-10-21 15 views
6

He estado usando LINQ to SQL desde hace años, pero esta es la primera vez que veo este comportamiento.Error en LINQ to SQL con cadenas vacías en la base de datos

Tengo una tabla de base de datos con algunas columnas (varchar(15)) que pueden contener cadenas vacías (''). Verifico esto ejecutando LEN(Column) y comprobando el resultado sea 0.

Ahora cuando llamo esto desde LINQ2SQL, devuelve el campo de objeto con una cadena que contiene un espacio único (string.Length == 1).

Hay algunas soluciones que podría aplicar, como hacer que NULL en la base de datos o recortar la cadena, pero me gustaría saber si alguien ha encontrado esto antes o si el error es conocido (informado en MS Connect) . Si no, lo reportaré.

Gracias.

+0

se trata esta sucediendo para diferenciar entre el valor NULL y cadena vacía? Por ejemplo: en un archivo, ¿cómo almacenarías una cadena NULL (file len = 0) y una cadena vacía (también file len = 0)? En OO world, la cadena NULL y la cadena vacía son 2 cosas diferentes, mientras que en el mundo de datos parecen ser las mismas – Ankur

Respuesta

8

el problema es con la función LEN:

SELECT LEN(' ') 

Devuelve 0 en SQL Server; es un PITA total

Pero

SELECT DATALENGTH(' ') 

Devuelve 1

+0

¡Muchas gracias! Uno de nuestros chicos DB también aprendió algo nuevo :) – leppie

+0

Solo para agregar, 'LEN' con ignorar los espacios en blanco al final. – leppie

+0

¡Hace meses que me molesta! – briantyler