当前位置:  开发笔记 > 编程语言 > 正文

从MySQL中的字符串中删除引号和逗号

如何解决《从MySQL中的字符串中删除引号和逗号》经验,为你挑选了1个好方法。

我正在从CSV文件中导入一些数据,并且大于1000get的数字会变成1,100等等.

从这里删除引号和逗号的好方法是什么,所以我可以把它放到一个int字段中?

编辑:

数据实际上已经在MySQL表中,所以我需要能够使用SQL.抱歉,混合.



1> Joseph Pecor..:

我的猜测是,因为数据能够导入该字段实际上是varchar或某个字符字段,因为导入到数字字段可能已失败.这是一个测试用例,我纯粹是一个MySQL,SQL解决方案.

    该表只是一个varchar的列(alpha).

    mysql> desc t;
    
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | alpha | varchar(15) | YES  |     | NULL    |       | 
    +-------+-------------+------+-----+---------+-------+
    

    添加记录

    mysql> insert into t values('"1,000,000"');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from t;
    
    +-------------+
    | alpha       |
    +-------------+
    | "1,000,000" | 
    +-------------+
    

    更新声明.

    mysql> update t set alpha = replace( replace(alpha, ',', ''), '"', '' );
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    mysql> select * from t;
    
    +---------+
    | alpha   |
    +---------+
    | 1000000 | 
    +---------+
    

所以最后我使用的声明是:

UPDATE table
   SET field_name = replace( replace(field_name, ',', ''), '"', '' );

我查看了MySQL文档,它看起来不像我可以做正则表达式查找和替换.虽然你可以像Eldila一样,使用正则表达式进行查找,然后使用替代解决方案.


另外要小心,s/"(\d+),(\d+)"/$1$2/因为如果数字只有一个逗号就有多少,例如"1,000,000"你将要进行全局替换(在perl中s///g).但即使有全局替换,替换也会从你最后一次停止的地方开始(除非perl不同),并且会错过其他所有逗号分隔的组.一个可能的解决方案是使第一个(\ d +)可选,就像这样s/(\d+)?,(\d+)/$1$2/g,在这种情况下,我需要第二个查找和替换来剥离引号.

以下是一些正则表达式仅作用于字符串"1,000,000"的ruby示例,请注意字符串中没有双引号,这只是数字本身的一个字符串.

>> "1,000,000".sub( /(\d+),(\d+)/, '\1\2' )
# => "1000,000"  
>> "1,000,000".gsub( /(\d+),(\d+)/, '\1\2' )
# => "1000,000"  
>> "1,000,000".gsub( /(\d+)?,(\d+)/, '\1\2' )
# => "1000000"  
>> "1,000,000".gsub( /[,"]/, '' )
# => "1000000"  
>> "1,000,000".gsub( /[^0-9]/, '' )
# => "1000000"

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有