部分项目中mysql表某个字段用的varchar(100)类型,业务中它即保存文本类型,又保存数字类型,如数字编码。如何区分出数字类型的值?

mysql中支持正则表达式匹配,正则表达式常常被用于MySQL中的字符匹配操作,同时也可以用于判断字段类型。

如我们查找所有是数字类型的数据

select code from eb_lang_code where is_admin = 1 and code regexp '^[0-9]+$'

查找code值不是数字类型的数据

select code from eb_lang_code where is_admin = 1 and code not regexp '^[0-9]+$'
或用下面这个
select code from eb_lang_code where is_admin = 1 and code regexp '[^0-9.]$'


最好不要用字符串来保存数字类型值,不要混用,主要防止统计会出现问题。如取最大值会有问题。

select max(code) from eb_lang_code

这个最大code会取到字符类型值。

正确的使用下面方法

select max(code+0) from eb_lang_code

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
返回
顶部