sql 數字轉換為字元

2021-08-08 22:30:57 字數 1631 閱讀 3954

今天在把一些資料匯入到sql server的時候遇到有個列被匯入成float型別,而我實際需要的是varchar型別,所以要進行型別轉換,轉換時遇到了一點問題,所以寫這篇部落格記錄一下。

sql server中的數值型別分為兩種,一種是精確的數值型別,具體的資料型別有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,這些資料型別能夠精確的表明某以數值;另一種是近似的數值型別,具體就是float和real。浮點資料為近似值,因此,並非資料型別範圍內的所有值都能精確地表示。

有些時候我們需要將這些數值型別轉換為字串型別,用到的轉換函式就是cast和convert,這兩個函式的作用都是進行型別轉換,只不過語法格式不同。據說在轉換時還是有一定的區別的,不過我個人更習慣於使用convert函式,應該這個函式一方面更像是個函式的語法,另一方面在做時間和數值轉換成字串時還可以指定轉換的格式。

對於精確數值的資料型別,轉換出來的字串就是我們儲存的數值。比如:

declare @i int

set @i=123456789

print

'test:'+convert(varchar(20),@i)

輸出就是:test:123456789

而如果對於近似數值的資料型別,那麼可就沒有那麼簡單了。

declare @i float

set @i=123456789

print

'test:'+convert(varchar(20),@i)

輸出結果:test:1.23457e+008

輸出的結果是使用科學計數法來表示的,再看看可否通過指定轉換樣式來指定不使用科學計數法呢?幫助文件中說到float 或 real 轉換為字元資料時的 style 值:

0(預設值)最大為 6 位數。根據需要使用科學記數法。

1 始終為 8 位值。始終使用科學記數法。

2 始終為 16 位值。始終使用科學記數法。

我們的值是123456789,超過了6位數.所以不管是0還是1,2結果都會使用科學計數法來表示。那麼要怎麼樣才能將我們的資料不轉換成科學計數法而輸出呢?比較簡單的辦法就是將近似資料轉換為精確資料,然後再將精確資料轉換成字串。

同樣以上面的例子為例, 進行兩次資料型別的轉換如下:

declare @i float

set @i=123456789

print

'test:'+convert(varchar(20),convert(int,@i))

輸出:test:123456789

如果是有小數,那麼我們要轉換出小數字的話,可以轉換成decimal,轉換出的小數字數在定義decimal時指定。比如要輸出4位小數,那麼轉換**是:
declare @i float

set @i=123456789.12

print

'test:'+convert(varchar(20),convert(decimal(18,4),@i))

輸出:test:123456789.1200

字串轉換為數字

include include using namespace std 思路 首先看字串第一位是不是 或者 如果是 最後結果乘以乙個 1 如果是 最後結果乘以乙個1 然後遍歷字串,發現字元直接返回0 是數字,將其轉換為int型別 字元型別的數字轉換為整數型別的數字需要 48 轉換為數字後,乘以它所需...

字串轉換為數字

將乙個字串轉換為數字,這個題目很簡單。很多人都能在三分鐘之內寫出如下不到 10 行的 unsigned exchange char t return num 上面的 可以執行出來正確的結果。但是還需要考慮到以下幾點 輸入的字串中有非數字字元和正負號 考慮到最大的正整數和最小的負整數以及溢位 int ...

js 字串轉換為數字

方法主要有三種 轉換函式 強制型別轉換 利用js變數弱型別轉換。1.轉換函式 js提供了parseint 和parsefloat 兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,這兩個函式才能正確執行 對其他型別返回的都是nan not a number ...