mysql如何识别纯数字和带数字的混合/无功能?

时间:2018-11-29 21:20:39

标签: mysql regex

在MySQL数据库中,我在表中的一列中既有纯数字也有混合数字/字母。没有模式,我想区分它是否是纯数字,并将其标记为true,否则标记为false。有什么好方法可以使用吗?我尝试过:

ID REGEXP '^[[:digit:]]+$',
ID REGEXP '[0-9]+',
   REGEXP '^[a-zA-Z.]+$',
   REGEXP '[^0-9]*1[^0-9]*2[^0-9]*3[^0-9]*4[^0-9]*5[^0-9]*'

列:

2A0000BY
4A00A0BF.1
12345678
12345679.1
300000BE
123456FD
3S435F40

2 个答案:

答案 0 :(得分:1)

使用如下所示的数字匹配怎么办?如果不是,则表示它包含一些字母:

ID REGEXP '^[\-]?[0-9]+\\.?[0-9]*$'

您也可以不使用REGEX来做到这一点,就像这样:

CONCAT('',ID * 1) = ID

您可以测试两种方法here的完整查询。

希望有帮助。

答案 1 :(得分:0)

您可以尝试在SELECT语句期间将CASE语句与regexp一起使用。

类似的事情可能起作用:对于仅是数字的每个“ id”条目,它返回true / 1,否则返回false / 0:

SELECT
  id,
  CASE 
     WHEN id regexp '^[0-9.]*$' THEN true
     ELSE false
  END AS is_only_numbers
FROM strings;

SQL Fiddle Demonstrating