請幫我解決問題。桌子:
id_client,值
| 身份證 | 價值觀 |
|---|---|
| 1 | 0,46 |
| 2 | 25% |
| 3 | 無資訊 |
| 4 | 二十二 |
| 5 | 12.2 |
| 6 | 365% |
| 7 | 54 |
我需要從字串中獲取數字作為 percantages
需要采石場的下一個結果
| 身份證 | 價值觀 |
|---|---|
| 1 | 0,46 |
| 2 | 25 |
| 3 | 無效的 |
| 4 | 無效的 |
| 5 | 12,2 |
| 6 | 365 |
| 7 | 54 |
嘗試了一些我在這里找到的正則運算式,但它作業錯誤
uj5u.com熱心網友回復:
正則運算式子字串操作至少應該是一個很好的起點:
SELECT
id_client,
REGEXP_SUBSTR(values, '[0-9] ([,.][0-9] )?') AS values
FROM yourTable;
上面的查詢將values只留下數字字串的列。要獲得實際的數字列,您需要某種額外的演員表。您的資料似乎同時使用逗號和點作為小數位。您可能需要在我上面的答案之上進行額外的替換,以使浮點數轉換為適合您的語言環境的正確格式。
uj5u.com熱心網友回復:
從字串右側修剪%字符并將小數點標準化為單個字符,然后TO_NUMBER與DEFAULT NULL ON CONVERSION ERROROracle 12 中提供的 一起使用:
SELECT value,
TO_NUMBER(
REPLACE(RTRIM(value, '%'), ',', '.') DEFAULT NULL ON CONVERSION ERROR,
'999999.99'
) AS number_value
FROM table_name
其中,對于樣本資料:
CREATE TABLE table_name (ID, value) AS
SELECT 1, '0,46' FROM DUAL UNION ALL
SELECT 2, '25%' FROM DUAL UNION ALL
SELECT 3, 'No information' FROM DUAL UNION ALL
SELECT 4, 'Twenty two' FROM DUAL UNION ALL
SELECT 5, '12.2' FROM DUAL UNION ALL
SELECT 6, '365%' FROM DUAL UNION ALL
SELECT 7, '54' FROM DUAL;
輸出:
| 價值 | NUMBER_VALUE |
|---|---|
| 0,46 | .46 |
| 25% | 25 |
| 無資訊 | 無效的 |
| 二十二 | 無效的 |
| 12.2 | 12.2 |
| 365% | 365 |
| 54 | 54 |
小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531650.html
標籤:sql甲骨文
