今天需要写sql查找出字段中包含数字的行,因为没有用过,只好百度,得到写法如下:

select name from text where name regex '[0-9]'

在通过上面的语句找出有问题的行之后,需要截取掉数字,我的数据中的数字斗志在最后一位,所以就写了下面的sql

select name, substr(name,1, length(name) - 1) from test where name regex '[0-9]'

结果发现截取之后的数据竟然和原来的数据一样,例如:张三1,截取后还是张三1;
我把 length(name),也显示出来,结果如下:

张三1   张三1  7

从结果上看到【张三1】的长度是7,因此substr截取的是1-6 的,所以结果仍然是【张三1】,这时候,我发现了另外一个长度函数 char_length,这个函数返回的长度是3,所以使用这个行数就可以了。

select name, substr(name,1, char_length(name) - 1) from test where name regex '[0-9]'
Logo

更多推荐