在SQL SERVER 2005中,將表中字串轉換為數字的函式共2個: 1. convert(int,欄位名) 例如:select convert(int,"3") 2. cast(欄位名 as int) 例如:select cast("3" as int) 其實,一般情況下沒有必要把字串轉換為數字型別 假如需要比較兩個欄位是否相等,但是一個欄位為字串型別,一個為數字型別,用“=”比較兩個值是否相等時,SQL SERVER會自動把字串轉換為數字再比較的! 例如: select da.TITLE_NAME,
dsc.NAME
dd.AREA
dsc.ID
在SQL SERVER 2005中,將表中字串轉換為數字的函式共2個: 1. convert(int,欄位名) 例如:select convert(int,"3") 2. cast(欄位名 as int) 例如:select cast("3" as int) 其實,一般情況下沒有必要把字串轉換為數字型別 假如需要比較兩個欄位是否相等,但是一個欄位為字串型別,一個為數字型別,用“=”比較兩個值是否相等時,SQL SERVER會自動把字串轉換為數字再比較的! 例如: select da.TITLE_NAME,
dsc.NAME
from dbo.DV_DUTY dd inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE="2") wheredd.AREA
is not null 這個SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID
為數字型別,dd.AREA
為字元型別,相當於這樣on(1="1")的判斷,這時候就會自動吧字串的"1"轉換為數字型別再比較的。 但是也有弊端,一旦字元型別轉換為數字型別出錯(說明字串的確就非數字組成的),SQL就會丟擲異常。 SQL SERVER 2005中有判斷欄位是否為數字的函式: ISNUMERIC(欄位名) -----假如欄位是數字型別返回1,不是就返回0 但是好像有的時候不好使,比如:select isnumeric("3,34") 就返回1 說明這個函式對欄位值中全是數字但是數字間用“,”和“.”(逗號或點)隔開的都視為數字了!