mysql不用正则表达式,若存在一个表,存在一个属性a,a中可能包含'2', '4', '8','16','32','64','128','256','512','8192','1024', '2048','4096','16384','32768','65536', '131072','262144','524288','1048576','2097152','4194304', '33','34','31',现需要统计行数:若属性a的每行中出现一个或一个以上的数字和以上字符相同的行数 自增1,只要出现不相同的数字就不参与统计
时间: 2023-07-15 18:15:13 浏览: 69
可以使用MySQL中的正则表达式函数来实现这个需求。
首先,我们可以使用`REGEXP`函数来匹配包含数字和以上字符的行。具体地,可以使用以下正则表达式:
```
'[248]|1[2468]|3[268]|6[48]|12[48]|24[68]|48[048]|96[248]|8192|2048|4096|16[348]|32[768]|65[536]|131072|262144|524288|1048576|2097152|4194304|33|34|31'
```
然后,我们可以使用`COUNT`函数来统计匹配到的行数。具体地,可以使用以下SQL语句:
```sql
SELECT COUNT(*) FROM my_table WHERE a REGEXP '[248]|1[2468]|3[268]|6[48]|12[48]|24[68]|48[048]|96[248]|8192|2048|4096|16[348]|32[768]|65[536]|131072|262144|524288|1048576|2097152|4194304|33|34|31';
```
这个SQL语句会返回属性a中至少包含一个或一个以上的数字和以上字符的行数。如果要将这个行数自增1,可以使用以下SQL语句:
```sql
UPDATE my_table SET count = count + 1 WHERE a REGEXP '[248]|1[2468]|3[268]|6[48]|12[48]|24[68]|48[048]|96[248]|8192|2048|4096|16[348]|32[768]|65[536]|131072|262144|524288|1048576|2097152|4194304|33|34|31';
```
这个SQL语句会将属性a中至少包含一个或一个以上的数字和以上字符的行的count字段加1。
阅读全文