如何在没有函数的情况下识别纯数字和混合数字/字母?

np8igboo  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(462)

在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
ux6nzvsh

ux6nzvsh1#

用下面这样的方法来匹配数字怎么样。如果没有,则表示它有一些字母:

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

您也可以不使用regex执行此操作,如下所示:

CONCAT('',ID * 1) = ID

您可以在这里测试这两种方法的完整查询。
希望有帮助。

x0fgdtte

x0fgdtte2#

您可以在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小提琴演示

相关问题