我的MySQL数据库中有一个表,它有一个列product_name,它有像
这样的行KK004A
KK004B
KK004C
KK007
N01002X/G
N01005X/G
N01005Y/G
N01005Z/G
002A
002B
我想要GROUP BY以便它返回:
KK004A
KK007
N01002X/G
N01005X/G
002A
也就是说,它由Regex组成
[A-Z]*\d+
我该怎么做?我对非正则表达方式持开放态度
由于
答案 0 :(得分:2)
使用Finding number position in string
中的技术可以做到这一点SELECT
val
from test
group by
SUBSTRING(
val,1,(LENGTH(val)+1)-LEAST (
if (Locate('0',reverse(val)) >0,Locate('0',reverse(val)),999),
if (Locate('1',reverse(val)) >0,Locate('1',reverse(val)),999),
if (Locate('2',reverse(val)) >0,Locate('2',reverse(val)),999),
if (Locate('3',reverse(val)) >0,Locate('3',reverse(val)),999),
if (Locate('4',reverse(val)) >0,Locate('4',reverse(val)),999),
if (Locate('5',reverse(val)) >0,Locate('5',reverse(val)),999),
if (Locate('6',reverse(val)) >0,Locate('6',reverse(val)),999),
if (Locate('7',reverse(val)) >0,Locate('7',reverse(val)),999),
if (Locate('8',reverse(val)) >0,Locate('8',reverse(val)),999),
if (Locate('9',reverse(val)) >0,Locate('9',reverse(val)),999)
)
)
;
<强> DEMO 强>
您需要在上面的查询中更改表名和列名。