【问题标题】:MySQL: Update a column if value is numeric only [duplicate]MySQL:如果值仅为数字,则更新列[重复]
【发布时间】:2014-01-18 06:11:09
【问题描述】:

如果 value 只是数字,有没有办法更新 mysql 中的列?

即。 UPDATE myTable SET ColumnA =NewValue WHERE ColumnA isnumeric

Column Avarchar(25)Column A 值可以是文本或 1 或 2 或 23...

谢谢你

【问题讨论】:

  • 好吧,至少你可以在 where 中使用正则表达式来查看字段是否只包含数字
  • 这闻起来像是糟糕的数据库设计。
  • 数据库设计不错。我从 excel 文件创建了一个自动数据处理的作业。

标签: mysql sql regex sql-update numeric


【解决方案1】:

尝试创建INT 列并拨打电话:

update myTable set IntColumn = ColumnA

将 intcolumn 类型替换为 varchar 并更新您的表,其中 ColumnA = IntColumn(非实数字符串将为空或与实数不同)。

【讨论】:

    【解决方案2】:

    使用正则表达式查看您的列是否包含数字或其他内容

    WHERE ColumnA REGEXP '[0-9]+'
    

    【讨论】:

    • 正则表达式无效,它也会匹配ColumnA除了数字之外还有其他字符的行。
    • 我的意思是根据需要使用正则表达式。这只是一个例子
    【解决方案3】:

    试试这个:

    UPDATE myTable SET ColumnA =NewValue WHERE concat('',ColumnA * 1) = ColumnA 
    

    或者

    UPDATE myTable SET ColumnA =NewValue WHERE ColumnA REGEXP '[0-9]+';
    

    看这个话题Detect if value is number in MySQL

    【讨论】:

      【解决方案4】:

      使用REGEXP()函数

      试试这个:

      UPDATE myTable SET ColumnA = NewValue WHERE ColumnA REGEXP '^[0-9]+$'
      

      UPDATE myTable SET ColumnA = NewValue WHERE ColumnA REGEXP '^[[:digit:]]+$'
      

      【讨论】:

      • @Glavić 检查我的更新答案。我在 RegEx 中添加了 ^$
      【解决方案5】:

      试试这样的。它对我有用

      if ('value_to_check' REGEXP '^[0-9]+$') {
      THEN 
      // Do ur work,..
      }
      

      【讨论】:

        猜你喜欢
        • 2017-04-14
        • 1970-01-01
        • 2012-10-29
        • 2019-01-18
        • 1970-01-01
        • 2020-04-10
        • 1970-01-01
        • 2018-02-02
        • 1970-01-01
        相关资源
        最近更新 更多