我正在查看存储过程并看到许多行,如:
case when len(isnull(INVOICE.INVOICE_DATE,'')) > 0
and isdate(INVOICE.INVOICE_DATE) = 1
then convert(datetime,INVOICE.INVOICE_DATE)
else null end
Run Code Online (Sandbox Code Playgroud)
和
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
Run Code Online (Sandbox Code Playgroud)
我不明白为什么ISNULL和LEN支票总是在那里.我缺少一些好处吗?相反,对代码当前的编写方式是否有任何不利影响?
在LEN和ISNULL不需要检查.
ISDATE并且ISNUMERIC将返回0值是否NULL还是空的,所以这仅仅是没有必要的.可能有人额外谨慎......
这些可以写成:
case when ISDATE(INVOICE.INVOICE_DATE) = 1
then convert(datetime,INVOICE.INVOICE_DATE)
else null end
Run Code Online (Sandbox Code Playgroud)
和:
case when ISNUMERIC(SHIPMENT.NET_AMOUNT_DUE) = 1
then convert(money,SHIPMENT.NET_AMOUNT_DUE)
else null end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |