1. 程式人生 > >SQL Server Select中函式執行的次序

SQL Server Select中函式執行的次序

問題:

SELECT  CONVERT(NUMERIC,HC.CONT_VOL) FROM T_HAWB_DIMENSION HD INNER JOIN T_HAWB_CONTAINER HC ONHD.HAWB_HDR_SK = HC.HAWB_HDR_SKWHERE HD.HAWB_NO = 'HKHKG5900706393'

語句報錯:Error converting data type varchar to numeric.

符合條件的只有一條記錄,CONT_VOL欄位值為'53.26'。SELECT  CONVERT(NUMERIC,53.26) 結果為53。

發現原因是有一些記錄的值是空字串。本以為SQL Server的執行順序為:

1、Join ;2、Filter;3、Select,Convert在Select時才發生,這樣效率較高。

現實是Convert在Join時就已經發生了,那些空字串導致了錯誤。不知道為什麼要這麼設計。