SQL中怎么把字符串轉(zhuǎn)換為數(shù)字?
在SQL SERVER 2005中,將表中字符串轉(zhuǎn)換為數(shù)字的函數(shù)共2個(gè): 1. convert(int,字段名) 例如:select convert(int,'3') 2. cast(字段名 as int) 例如:select cast('3' as int) 其實(shí),一般情況下沒(méi)有必要把字符串轉(zhuǎn)換為數(shù)字類(lèi)型 假如需要比較兩個(gè)字段是否相等,但是一個(gè)字段為字符串類(lèi)型,一個(gè)為數(shù)字類(lèi)型,用“=”比較兩個(gè)值是否相等時(shí),SQL SERVER會(huì)自動(dòng)把字符串轉(zhuǎn)換為數(shù)字再比較的! 例如: 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 這個(gè)SQL中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID
為數(shù)字類(lèi)型,dd.AREA
為字符類(lèi)型,相當(dāng)于這樣on(1='1')的判斷,這時(shí)候就會(huì)自動(dòng)吧字符串的'1'轉(zhuǎn)換為數(shù)字類(lèi)型再比較的。 但是也有弊端,一旦字符類(lèi)型轉(zhuǎn)換為數(shù)字類(lèi)型出錯(cuò)(說(shuō)明字符串的確就非數(shù)字組成的),SQL就會(huì)拋出異常。 SQL SERVER 2005中有判斷字段是否為數(shù)字的函數(shù): ISNUMERIC(字段名) -----假如字段是數(shù)字類(lèi)型返回1,不是就返回0 但是好像有的時(shí)候不好使,比如:select isnumeric('3,34') 就返回1 說(shuō)明這個(gè)函數(shù)對(duì)字段值中全是數(shù)字但是數(shù)字間用“,”和“.”(逗號(hào)或點(diǎn))隔開(kāi)的都視為數(shù)字了!