绝对不卡福利网站|中文字幕在笑第一页|午夜福利中文字幕首页|久久精彩视频免费观看

  • <abbr id="lczsv"></abbr>
    <blockquote id="lczsv"></blockquote>

    <track id="lczsv"><table id="lczsv"><nobr id="lczsv"></nobr></table></track>
    • sqlserver中如何把字符串轉(zhuǎn)換成數(shù)字(關(guān)于SQL替換的問題 怎么讓數(shù)字變成指定位數(shù))

      2025-01-07 百科 86閱讀 投稿:骨哀引

      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

      聲明:沿途百知所有(內(nèi)容)均由用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流。若您的權(quán)利被侵害,請聯(lián)系我們將盡快刪除