如何解析mySQL文本字段中的特定数字

如何解析mySQL文本字段中的特定数字,mysql,phpmyadmin,Mysql,Phpmyadmin,我有一个表列,每个字段都有一堆文本。每个字段中都有一个保持一致的特定句子(实际价格除外),其中说明: “价格是15350美元。” 我想从每个字段中解析出美元数字,并将其放入自己的列中 什么样的SQL语句可以实现这一点?试试这个:(同时查看) mysql> select replace(replace(mid("The price is $15,350.", 15), ",", ""), ".", ""); +-----------------------------------------

我有一个表列,每个字段都有一堆文本。每个字段中都有一个保持一致的特定句子(实际价格除外),其中说明:

“价格是15350美元。”

我想从每个字段中解析出美元数字,并将其放入自己的列中

什么样的SQL语句可以实现这一点?

试试这个:(同时查看)

mysql> select replace(replace(mid("The price is $15,350.", 15), ",", ""), ".", "");
+----------------------------------------------------------------------+
| replace(replace(mid("The price is $15,350.", 15), ",", ""), ".", "") |
+----------------------------------------------------------------------+
| 15350                                                                |
+----------------------------------------------------------------------+
原始答案(保留,因为它涵盖了一些基本的解析概念,并通知了上次提交的解决方案):

如果情况如此一致,那么一系列简单的
REPLACE
函数就可以用空字符串删除原始值周围的文本。例如:

SELECT your_column AS original_value,
REPLACE(REPLACE(your_column, 'The price is $', ''), '$', '') AS parsed_value
FROM your_table 
输出:

original_value parsed_value The price is $15,350. 15,350. 新产出:

original_value parsed_value The price is $15,350. 15350. 作为解析值 从你的桌子上


结果值15350现在应该可以很容易地转换为十进制,并在结果周围附加一个
转换(xxxxx为十进制(10,2))

那么,你的意思是你想要“15350”?如果字符串是一致的,你可以简单地用locate()和substr()操作。是的,我想要15350作为输出。我应该澄清,在文本“价格为$\u\u\u”之前和之后都有可变文本。@Gregg:请查看我对答案的最新编辑,并查看SQL Fiddle:Paul,我应该澄清,在“价格为$\u\u”之前和之后都有文本我刚刚尝试了你的代码,它工作了,除了之前和之后的所有文本仍然存在。我只是想把价格解析出来,把一切都抛在脑后。是否对该代码进行了编辑以实现此目的?还有,谢谢you@Gregg:Hmmm.文本是否也一致,或者只是
价格是$\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。请参阅我的最新答案。您还可以使用SQL小提琴:
SELECT your_column AS original_value,
REPLACE(
    REPLACE(
        REPLACE(your_column, 
            'The price is $', ''), '$', ''), ',', '') AS parsed_value
FROM your_table 
original_value parsed_value The price is $15,350. 15350.
SELECT your_column AS original_value,
SUBSTRING('The price is $',
    LOCATE ('The price is $', your_column)
REPLACE(
    REPLACE(
        REPLACE(your_column, 
            'The price is $', ''), '$', ''), ',', '')
,