表设计:
city_id int(10)
city_names varchar(20)
flash_ids varchar(20)===============================
部分记录 :
-----------------------------------------
'10' , '武汉' , '10,2,57,'
'1' , '北京' , '1,14,584,22,'
'897' , '鞍山' , ',56'
'8' , '广州' , ''
'89' , '深圳' , '12,'-----------------------------------------数据中只有两种情况的数据是正确的。
一种是flash_ids的值为空,另外一种是就是如果不为空,那么数字之间使用逗号隔开(假如里面的数字个数大于1个的话)
我现在就是需要得到的那种正确的格式的数据,我使用的SQL语句如下:
SELECT *
FROM tb
WHERE `flash_ids` REGEXP '^([1-9][0-9]),*([1-9][0-9])$'
LIMIT 0 , 30 但是无法得到我想要的那种结果,如何才可以实现。
city_id int(10)
city_names varchar(20)
flash_ids varchar(20)===============================
部分记录 :
-----------------------------------------
'10' , '武汉' , '10,2,57,'
'1' , '北京' , '1,14,584,22,'
'897' , '鞍山' , ',56'
'8' , '广州' , ''
'89' , '深圳' , '12,'-----------------------------------------数据中只有两种情况的数据是正确的。
一种是flash_ids的值为空,另外一种是就是如果不为空,那么数字之间使用逗号隔开(假如里面的数字个数大于1个的话)
我现在就是需要得到的那种正确的格式的数据,我使用的SQL语句如下:
SELECT *
FROM tb
WHERE `flash_ids` REGEXP '^([1-9][0-9]),*([1-9][0-9])$'
LIMIT 0 , 30 但是无法得到我想要的那种结果,如何才可以实现。
mysql> select * from t_default7;
+---------+------------+--------------+
| city_id | city_names | flash_ids |
+---------+------------+--------------+
| 10 | 武汉 | 10,2,57, |
| 1 | 北京 | 1,14,584,22, |
| 897 | 鞍山 | ,56 |
| 8 | 广州 | |
| 89 | 深圳 | 12, |
| 102 | 杭州 | 10,12,120 |
| 45 | 苏州 | ,,1,1001,, |
+---------+------------+--------------+
7 rows in set (0.00 sec)mysql> select * from t_default7
-> where flash_ids regexp '^([0-9]+,)*[0-9]+$'
-> or flash_ids=''
-> or flash_ids is null;
+---------+------------+-----------+
| city_id | city_names | flash_ids |
+---------+------------+-----------+
| 8 | 广州 | |
| 102 | 杭州 | 10,12,120 |
+---------+------------+-----------+
2 rows in set (0.00 sec)mysql>