2011-10-21 2 views
6

Utilizzo LINQ to SQL da anni, ma questa è la prima volta che vedo questo comportamento.Errore in LINQ su SQL con stringhe vuote sul database

Ho una tabella DB con alcune colonne (varchar(15)) che possono contenere stringhe vuote (''). Lo verifica eseguendo LEN(Column) e verificando che il risultato sia 0.

Ora quando chiamo questo da LINQ2SQL, restituisce il campo oggetto con una stringa contenente uno spazio singolo (string.Length == 1).

Ci sono alcune soluzioni alternative che potrei applicare, come renderle NULL sul DB o tagliare la stringa, ma vorrei sapere se qualcuno ha incontrato questo prima o se il bug è noto (riportato su MS Connect) . In caso contrario, lo segnalerò.

Grazie.

+0

E 'questo accada a distinguere tra il valore NULL e stringa vuota? Ad esempio: in un file come si memorizzerebbe una stringa NULL (file len = 0) e una stringa vuota (anche file len = 0). In OO world NULL stringa e stringa vuota sono 2 cose diverse mentre nel mondo dei dati sembrano essere gli stessi – Ankur

risposta

8

il problema è con la funzione LEN:

SELECT LEN(' ') 

Restituisce 0 in SQL Server; è un totale PITA.

Ma

SELECT DATALENGTH(' ') 

Restituisce 1

+0

Sweet thanks! Uno dei nostri ragazzi di DB ha anche imparato qualcosa di nuovo :) – leppie

+0

Giusto per aggiungere, 'LEN' con ignorare lo spazio vuoto finale. – leppie

+0

Mi ha annoiato per mesi! – briantyler