Domanda

Questa è parte della mia dichiarazione prescelta all'interno di un formview che funziona bene fino a che non colpisce un valore nullo durante il processo di aggiornamento.

 (SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id
 ORDER BY sort_no ) AS faxid

così ho provato ad utilizzare la funzione ISNULL nel seguente modo, ma genera un errore. come può essere fatto?

ISNULL((SELECT TOP 1 F.tel_id FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id= @id ORDER BY sort_no ) AS faxid ,0) AS faxid
È stato utile?

Soluzione

credo di aver trovato la causa del problema. E se questo è veramente quello che allora io sono quasi certo che qualcun altro avrebbe individuato prima di quanto ho fatto io se avessi formattato il secondo frammento di codice più bene.

Quindi, qui va il frammento di codice, un po 'riformattato:

ISNULL(
  (
    SELECT TOP 1 F.tel_id
    FROM TELEPHONE as F
    where F.tel_type_id = 3
      AND F.client_id= @id
    ORDER BY sort_no
  ) AS faxid,
  0
) AS faxid

La parte evidenziata, il AS fixed morse subito dopo la subquery, è errata, semplicemente non dovrebbe essere lì. Probabilmente solo trascurato di esso.

Altri suggerimenti

Le vostre esigenze IsNull essere intorno F.tel_id

Prova

SELECT TOP 1 ISNULL(F.tel_id, 0) FROM TELEPHONE as F where F.tel_type_id = 3 AND F.client_id = @id ORDER BY sort_no

È possibile utilizzare la funzione di COALESCE di restituire qualcosa di diverso da zero . Così, quando i tuoi esegue query e ha un valore che viene restituito il resto il valore specificato viene restituito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top