部分项目中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
发表评论 取消回复