簡體   English   中英

sql僅從列中提取數值

[英]sql extract only numeric value from column

我有一個名為“memo_line_2”的列,值格式類似於:“$3000.00(卡限額增加)”,我如何僅從該列中提取數值?謝謝示例:

'$3000.00 (card limit increase)' -> 3000
'$5000.00 (card limit increase)' -> 5000
'$12000.00 (card limit increase)' ->12000

您可以REGEXP_SUBSTR()使用REGEXP_SUBSTR()

SELECT REGEXP_SUBSTR(tmp.`value`, '[0-9]+') as `new_value`
  FROM (SELECT '$3000.00' as `value` UNION ALL 
        SELECT '$5000.00' as `value` UNION ALL 
        SELECT '$12000.00' as `value`) tmp 

返回:

new_value
---------
3000
5000
12000

如果您想保留小數點后的所有內容,請使用'[0-9.]+'作為正則表達式過濾器。

如果您的數據將始終采用這種格式,您可以使用以下查詢來選擇$和 之間的數據.

SELECT substring_index(substring_index(memo_line_2, '$', -1), '.', 1)
FROM your_table;

參考: 兩個字符串之間的 MySQL 子字符串

您可以使用:

select regexp_substr(col, '[0-9]+[.]?[0-9]*')

這將提取帶有美分的數字。 然后,您可以轉換為整數或數字:

select cast(regexp_substr(col, '[0-9]+[.]?[0-9]*') as unsigned)

可以通過在 sql 查詢中創建自定義函數來完成

看一眼:

https://stackoverflow.com/a/372​​69038/16536522

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM