1. sqlserver中如何把字符串轉(zhuǎn)換成數(shù)字
在SQL SERVER 2005中,將表中字符串轉(zhuǎn)換為數(shù)字的函數(shù)共2個:
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其實,一般情況下沒有必要把字符串轉(zhuǎn)換為數(shù)字類型
假如需要比較兩個字段是否相等,但是一個字段為字符串類型,一個為數(shù)字類型,用“=”比較兩個值是否相等時,SQL SERVER會自動把字符串轉(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')
where dd.AREA is not null
這個SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID為數(shù)字類型,dd.AREA為字符類型,相當(dāng)于這樣on(1='1')的判斷,這時候就會自動吧字符串的'1'轉(zhuǎn)換為數(shù)字類型再比較的。
但是也有弊端,一旦字符類型轉(zhuǎn)換為數(shù)字類型出錯(說明字符串的確就非數(shù)字組成的),SQL就會拋出異常。
SQL SERVER 2005中有判斷字段是否為數(shù)字的函數(shù):
ISNUMERIC(字段名) -----假如字段是數(shù)字類型返回1,不是就返回0
但是好像有的時候不好使,比如:select isnumeric('3,34') 就返回1
說明這個函數(shù)對字段值中全是數(shù)字但是數(shù)字間用“,”和“.”(逗號或點)隔開的都視為數(shù)字了!
2. 關(guān)于SQL替換的問題,怎么讓數(shù)字變成指定位數(shù)
按照你的說法也就是說整個字符串的長度固定。那么就用length(oracle),len(sql server)進(jìn)行判斷,凡是不滿足長度的都要加0補(bǔ)全。
會紀(jì)[2013]這部分是固定的,那么我們就刨除這部分利用后面的長度固定來做。我只會寫oracle的,其他數(shù)據(jù)庫可能你要找找他的函數(shù)了。
update table set WG7=substr(WG7,1,length('會紀(jì)[2013]'))||lpad(substr(WG7,length('會紀(jì)[2013]'+1),length('0000號'),'0') where length(WG7)
3. 在SQL語句里面如何將字符型轉(zhuǎn)換成數(shù)字型
先檢查金額列的數(shù)據(jù)是否都符合小數(shù)規(guī)范,用cast(金額 as decimal(10,4))>500或者
convert(decimal(10,4),金額)>500
注:decimal的長度和小數(shù)位數(shù)根據(jù)自己需要設(shè)定
sql中將字符串?dāng)?shù)字轉(zhuǎn)換成數(shù)字:
方法一:SELECT CAST('123' AS SIGNED integer);
方法二:SELECT CONVERT('123',SIGNED);
方法三:SELECT '123'+0;
擴(kuò)展資料:
能將字符型轉(zhuǎn)換成數(shù)字型,就能將數(shù)字轉(zhuǎn)化為字符,對于精確數(shù)值的數(shù)據(jù)類型,轉(zhuǎn)換出來的字符串就是我們存儲的數(shù)值。比如:
declare @i int
set @i=123456789
print 'test:'+convert(varchar(20),@i)
輸出就是:test:123456789
而如果對于近似數(shù)值的數(shù)據(jù)類型,那么可就沒有那么簡單了。
declare @i float
set @i=123456789
print 'test:'+convert(varchar(20),@i)
輸出結(jié)果:test:1.23457e+008
4. sql語句中怎樣將字符類型轉(zhuǎn)換成數(shù)字類型
先檢查金額列的數(shù)據(jù)是否都符合小數(shù)規(guī)范,轉(zhuǎn)為數(shù)字格式只有是數(shù)字的字符串才能轉(zhuǎn),如000012轉(zhuǎn)為12,.55轉(zhuǎn)為0.55,若是個英文符號等字符轉(zhuǎn)了就報無效數(shù)字類型的錯。
轉(zhuǎn)換的方式很多,但是字符串轉(zhuǎn)換成數(shù)字的前提是字符串中只包含了數(shù)字或者小數(shù)點。
可使用convert函數(shù),cast 和convert可以顯式轉(zhuǎn)換數(shù)據(jù)類型,在某些情況下SQL會根據(jù)實際情況自動轉(zhuǎn)換!不過建議顯式的轉(zhuǎn)換一下,這樣的話可讀性高一點!
因為字符串不一定能轉(zhuǎn)換成數(shù)字,所以用上面的,加上錯誤處理比較。
例子:
declare @a varchar(10)
set @a='as23'
select case when isnumeric(@a)=1 then cast(@a as int) else null end
set @a='23'
select case when isnumeric(@a)=1 then cast(@a as int) else null end
結(jié)果:
declare @a varchar(10)
set @a='as23'
select case when isnumeric(@a)=1 then cast(@a as int) else null end
set @a='23'
select case when isnumeric(@a)=1 then cast(@a as int) else null end