1

ストアドプロシージャを調べていると、次のような多くの行が表示されます。

case when len(isnull(INVOICE.INVOICE_DATE,'')) > 0 
      and isdate(INVOICE.INVOICE_DATE) = 1 
    then convert(datetime,INVOICE.INVOICE_DATE)
    else null end

case when len(isnull(SHIPMENT.NET_AMOUNT_DUE,'')) > 0 
      and isnumeric(SHIPMENT.NET_AMOUNT_DUE) = 1
   then convert(money,SHIPMENT.NET_AMOUNT_DUE) 
   else null end

ISNULLLENチェックが常にある理由がわかりません。私が見逃しているいくつかの利点はありますか?逆に、コードが現在どのように記述されているかについて何か不利益はありますか?

4

1 に答える 1

6

LENISNULLチェックは必要ありません。

ISDATE値がまたは空の場合はaをISNUMERIC返すため、これは必要ありません。おそらく誰かが特別に慎重になっている...0NULL

これらは次のように記述できます。

case when ISDATE(INVOICE.INVOICE_DATE) = 1 
    then convert(datetime,INVOICE.INVOICE_DATE)
    else null end

と:

case when ISNUMERIC(SHIPMENT.NET_AMOUNT_DUE) = 1
   then convert(money,SHIPMENT.NET_AMOUNT_DUE) 
   else null end
于 2012-05-14T15:14:11.217 に答える