在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")
where dd.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
說明這個函式對欄位值中全是數字但是數字間用“,”和“.”(逗號或點)隔開的都視為數字了!
在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")
where dd.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
說明這個函式對欄位值中全是數字但是數字間用“,”和“.”(逗號或點)隔開的都視為數字了!