久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

將包含以科學記數法表示的數字的 varchar 轉換為

Error casting varchar containing a number expressed in scientific notation to decimal(將包含以科學記數法表示的數字的 varchar 轉換為十進制時出錯)
本文介紹了將包含以科學記數法表示的數字的 varchar 轉換為十進制時出錯的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我目前正在從事一個 ETL 項目,其中來自 mongoDB 的數據被轉換為關系數據庫并存儲在 SQL Server 中.我遇到的問題是 mongoDB 中同一字段中的一些數字存儲為十進制 (0.058823),有時使用科學記數法 (5.8823e-02).

I am currently working on a ETL project where data from mongoDB is getting converted to relational database and stored in SQL Server. The problem I am having is that some of the numbers in the same field in mongoDB is stored as decimal (0.058823) and sometimes using scientific notation (5.8823e-02).

當我使用 Postgres 時,任何一種格式的值都作為雙精度值傳遞,而且我在查詢任何一種格式時都沒有問題.SQL Server 似乎不是這種情況.

When I was working with Postgres the values in either format got passed as double values and I had no issues querying with either format. This does not seem to be the case with SQL Server.

目前所有數據都作為 varchar 傳遞,在同一張表的視圖中,我使用以下代碼:

Currently all the data is passed as varchar and in the view of the same table I am using the following code:

CAST (CASE 
         WHEN [fieldname] LIKE '%e%' 
            THEN log([fieldname]) 
            ELSE [fieldname] 
      END AS DECIMAL(30, 20)) AS [FieldName1]

字段中還有列表,我將其轉換為需要使用 CTE 的子字符串和轉換.這將我的代碼從 100 多行變成了近 600 多行.想知道是否有更簡單的方法?

There are also list in a field that I am turning into substring and casting which requires using CTE. This is turning my code from 100+ to almost 600+ lines. Was wondering if there is a simpler way?

非常感謝您能提供的任何幫助.

I really appreciate any help you can provide.

推薦答案

SQL Server 支持科學記數法和常規"小數.

SQL Server supports both scientific notation and "regular" decimals.

這是一個簡單的例子:

DECLARE @D decimal(10, 6) = 0.058823,
        @S decimal(10, 6) = 5.8823e-02

SELECT  @D As Regular, 
        @S As Scientific, 
        IIF(@D = @S, 1, 0) As AreEqual

這個select語句的結果是:

The result of this select statement is:

Regular     Scientific  AreEqual
0.058823    0.058823    1

然而,從 varchar 轉換為十進制與常規小數完美配合,但會引發科學記數法錯誤:

However, casting from varchar to decimal works perfectly with regular decimals, but raises an error with scientific notation:

DECLARE @SD varchar(10) = '0.058823',
        @SS varchar(10) = '5.8823e-02'                 

SELECT CAST(@SD AS decimal(10, 6)) As RegularString,
       CAST(@SS AS decimal(10, 6)) As ScientificString

提出這個錯誤:

將數據類型 varchar 轉換為數字時出錯.

Error converting data type varchar to numeric.

另一方面,轉換為浮點數效果很好 - 所以要獲得小數,您可以先轉換為浮點數,然后再轉換為小數:

Casting to float, on the other hand, works perfectly - so to get a decimal you can cast to float and then to decimal:

SELECT  CAST(@SD AS decimal(10, 6)) As RegularString,
        CAST(CAST(@SS AS float) AS decimal(10, 6)) As ScientificString

結果:

RegularString   ScientificString
0,058823        0,058823

這篇關于將包含以科學記數法表示的數字的 varchar 轉換為十進制時出錯的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Converting Every Child Tags in to a Single Column with multiple Delimiters -SQL Server (3)(將每個子標記轉換為具有多個分隔符的單列-SQL Server (3))
How can I create a view from more than one table?(如何從多個表創建視圖?)
Create calculated value based on calculated value inside previous row(根據前一行內的計算值創建計算值)
How do I stack the first two columns of a table into a single column, but also pair third column with the first column only?(如何將表格的前兩列堆疊成一列,但也僅將第三列與第一列配對?) - IT屋-程序員軟件開發技
Recursive t-sql query(遞歸 t-sql 查詢)
Convert Month Name to Date / Month Number (Combinations of Questions amp; Answers)(將月份名稱轉換為日期/月份編號(問題和答案的組合))
主站蜘蛛池模板: 亚洲精品在线观看网站 | 亚洲视频在线观看 | 在线一区视频 | 成年人网站在线观看视频 | 少妇一级淫片免费放播放 | 亚洲国产成人精品久久 | 精品久久久久久久久久久久 | 久久另类视频 | 亚洲欧美日韩精品久久亚洲区 | 二区在线视频 | 国产精品成人在线播放 | 国内精品视频免费观看 | 国产一区免费视频 | 色婷婷婷婷色 | 欧美一级欧美一级在线播放 | 中文字幕高清免费日韩视频在线 | 黄色免费在线观看网址 | 91视频在线 | 久久人人国产 | 国产伦精品一区二区三区四区视频 | 色约约视频 | 欧美freesex黑人又粗又大 | 久久久婷婷 | 欧美www在线 | 国产乱码一区 | 一区二区三区四区日韩 | 成人一区二区三区在线 | 羞羞在线观看视频 | 成人在线国产 | 免费看片在线播放 | 午夜精品一区二区三区在线 | 成人午夜精品 | 久久久久久一区 | 国产美女视频黄a视频免费 国产精品福利视频 | 国产永久免费 | 欧美在线免费 | 国产精品国色综合久久 | 国色天香成人网 | 九七午夜剧场福利写真 | 日韩a视频| 精品亚洲一区二区 |