Ⅰ sql 中怎麼把字元串轉換為數字
具體方法如下:
將字元的數字轉成數字,比如'0'轉成0可以直接用加法來實現;
例如:將pony表中的d 進行排序,可d的定義為varchar,可以這樣解決;
select * from pony order by (d+0);
在進行ifnull處理時,比如 ifnull(a/b,'0') 這樣就會導致 a/b成了字元串,因此需要把'0'改成0,即可解決此困擾;
比較數字和varchar時,比如a=11,b="11ddddd";
則 select 11="11ddddd"相等;
若絕對比較可以這樣:
select binary 11 =binary "11ddddd";
字元集轉換 : CONVERT(xxx USING gb2312);
類型轉換和SQL Server一樣,就是類型參數有點點不同 : CAST(xxx AS 類型),CONVERT(xxx,類型);
類型必須用下列的類型:BINARY、CHAR()、DATE、TIME、DATETIME、DECIMAL、SIGNED、UNSIGNED。
Ⅱ 如何把SQL server 表裡插入轉換科學計數法的方法。
這個純粹就是資料庫設計者腦殘啊,單據編號直接用字元型就完了,給存成這樣,寫SQL 查詢語句都不好寫
Ⅲ sql列內容科學計數法需要轉換成標准數值
這個問題我遇到過。辦法就是資料庫建表的時候把對應列定義成字元型,如果需要計算或判斷的時候記得轉換格式,比如 oracle 中用 to_number,其他的可能是 cast。
Ⅳ sqlserver中如何把字元串轉換成數字
SQL Server中的數值類型分為兩種,一種是精確的數值類型,具體的數據類型有:bit、tinyint、smallint、int、bigint、smallmoney、money和decimal,這些數據類型能夠精確的表明某以數值;另一種是近似的數值類型,具體就是float和real。浮點數據為近似值,因此,並非數據類型範圍內的所有值都能精確地表示。
有些時候我們需要將這些數值類型轉換為字元串類型,用到的轉換函數就是cast和convert,這兩個函數的作用都是進行類型轉換,只不過語法格式不同。據說在轉換時還是有一定的區別的,不過我個人更習慣於使用convert函數,應該這個函數一方面更像是個函數的語法,另一方面在做時間和數值轉換成字元串時還可以指定轉換的格式。
對於精確數值的數據類型,轉換出來的字元串就是我們存儲的數值。比如:
declare @i intset @i=123456789
print 'test:'+convert(varchar(20),@i)
輸出就是:test:123456789
而如果對於近似數值的數據類型,那麼可就沒有那麼簡單了。
declare @i floatset @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 floatset @i=123456789
print 'test:'+convert(varchar(20),convert(int,@i))
輸出:test:123456789如果是有小數,那麼我們要轉換出小數位的話,可以轉換成decimal,轉換出的小數位數在定義decimal時指定。比如要輸出4位小數,那麼轉換代碼是:
declare @i floatset @i=123456789.12
print 'test:'+convert(varchar(20),convert(decimal(18,4),@i))
輸出:test:123456789.1200
Ⅳ sql如何中科學計數法轉換成標準的數值
selectconvert(decimal(19,5),convert(float,'+1.590759e+01'))
Ⅵ sql server中的怎麼把數值型轉換為字元串
有兩種。
1.轉換(int,欄位名)
例如:選擇convert(int,'3')
選擇cast('3'作為int)
一般來說,沒有必要將字元串轉換為數字類型,如果你需要比較兩個欄位是相等的,但為字元串類型欄位,類型,用「=」來比較這兩個值是相等的,SQLSERVER將自動將字元串轉換為一個數字,然後比較。
(6)科學計數法轉數字sql擴展閱讀:
注意事項:
這兩個函數都執行強制轉換,但是語法不同。據說有一些不同的轉換,但我更習慣於使用轉換函數,它更像一個函數的語法一方面,可以指定的格式轉換,將時間和價值轉換為一個字元串。
對於數據類型的確切值,轉換後的字元串是我們存儲的值。如:
聲明@iintset@i=123456789print'test:'+轉換(varchar(20),@i)
輸出是:test:123456789
對於具有近似值的數據類型,情況就不那麼簡單了。
聲明@ifloatset@i=123456789print'test:'+轉換(varchar(20),@i):test:1.23457e+008
Ⅶ 把excel導入sql server資料庫日期類型變成科學計數法怎麼辦
解決辦法:
1、首先把Excel的數據都轉換成你需要的格式,比如原本的日期是:「2011-3-3」,而你的資料庫的原有數據都是「2011-01-01」這樣的
2、選擇日期那列,然後右鍵【設置單元格格式】,然後在【數字】這個選項卡先選擇【日期】,然後再選擇最後一個【自定義】,這樣就看到剛才的【類型】那兒是「yyyy-m-d」,你改才「yyyy-mm-dd」,就行了,其他的格式也是如此的。
3、改好後,也是同樣的選中日期該列,然後復制,然後在桌面建立一個文檔,然後粘貼在文本文檔裡面,然後把Excel裡面的該列的【設置單元格格式】那個的【數字】選項卡選擇成【文本】,然後把該列清空,或者直接復制剛粘貼在文本文檔的裡面的內容,然後粘貼在日期這列就行了。
Ⅷ sql 存儲手機號為什麼用int和char都是用科學計數法現實的 呢。最後不知道怎麼的用float就可以顯示了
你是用excel導入的吧,excel的表格默認是數值型,所以導入到資料庫里的數據都是數值型
而數值型過長的話會轉變成科學計數法
如果要用excel導入到資料庫,需要先把表格那列換成文本型,而且一定要出現文本型的綠色小三角號
Ⅸ 將excel數據導入sql中,出現科學計數法
這個問題我遇到過。
辦法就是資料庫建表的時候把對應列定義成字元型,如果需要計算或判斷的時候記得轉換格式,比如 oracle 中用 to_number,其他的可能是 cast。
Ⅹ 將資料庫的純數字 (長10位) 寫到excel 就會變成科學計數法,
在EXCEL表格中單元格寫入的數字超過12位,在15位以內,可以設置單元格格式為數值格式
超過15位的數字,先設置單元格格式為文本格式,再寫入數字
或在數字前加上'號,如 '123456789123456789
否則第16起寫入的數字會被0替代