【问题标题】:Check if column starts with non integer检查列是否以非整数开头
【发布时间】:2016-09-20 14:53:12
【问题描述】:

我正在尝试查看列值是否以整数开头。该列假设为 8 位,并且是整数。我有一个以字母开头的值,由于某种原因我不能用它来挑选行。我正在尝试将该值设置为一个空白,但该行没有被提取出来。

我尝试过使用 LIKE 和 REGEXP,但它们不起作用,或者我使用它的方式失败了。

编辑:当我使用 REGEXP 时出现异常无法解析 SQL 查询。当我转换为 int 时,它会给出数据转换错误,因为该值以字母开头。

示例 1:

CASE 
WHEN Column LIKE '^[0-9]' THEN Column = ''
END

示例 2:

CASE 
WHEN Column REGEXP '^[0-9]' THEN Column = ''
END

【问题讨论】:

  • LIKE 不使用正则表达式运算符,所以第一个应该失败
  • 正则表达式 '^[0-9]+$';
  • 另外,usnig CAST 怎么样,以便将数据类型转换为 unsigned,它将强制列的输出为整数,如果它以数字开头,它将为 null 或零(我不确定是哪一个,因此这只是一个评论)

标签: mysql regex case sql-like


【解决方案1】:

只是为了在您的选择过程中将不以数字开头的值转换为空字符串,您可以使用:

CASE 
  WHEN Column REGEXP '^[0-9]' THEN Column ELSE ''
END

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2023-01-01
    • 2018-02-02
    • 2011-05-24
    • 2014-11-17
    • 2012-02-06
    相关资源
    最近更新 更多