Php 从由字符和具有相同字符的整数组成的字符串中添加整数
我有这张桌子Php 从由字符和具有相同字符的整数组成的字符串中添加整数,php,mysql,Php,Mysql,我有这张桌子 name | column bob11 | value bob22 | value red12 | value bam22 | value 我想做的是把数字11和22相加,因为鲍勃的名字是一样的。我想以这种方式将其与其他名称一起输出 name | column bob33 | value red12 | value bam22 | value 我已经知道如何通过这段代码获得具有相同值的列 "SELECT name, COUNT(*) as
name | column
bob11 | value
bob22 | value
red12 | value
bam22 | value
我想做的是把数字11和22相加,因为鲍勃的名字是一样的。我想以这种方式将其与其他名称一起输出
name | column
bob33 | value
red12 | value
bam22 | value
我已经知道如何通过这段代码获得具有相同值的列
"SELECT name, COUNT(*) as count FROM table GROUP BY name HAVING COUNT(*) > 1"
但是我不知道怎么做手术。任何想法都将不胜感激。谢谢如果数字前的部分总是3个字符长,您可以使用
LEFT()
和SUBSTR()
提取前缀和数字,然后使用CONCAT()
和SUM()
组合它们
SELECT CONCAT(LEFT(name, 3), SUM(SUBSTR(name, 4))) AS name, `column`
FROM yourTable
GROUP BY LEFT(name, 3);
如果没有,则需要编写一个返回数字后缀位置的函数,并使用该函数代替硬编码3
SELECT CONCAT(LEFT(name, number_pos(name)-1), SUM(SUBSTR(name, number_pos(name)))) AS name, `column`
FROM yourTable
GROUP BY LEFT(name, number_pos(name)-1)
有关查找数字位置的方法,请参阅。我认为单用SQL无法做到这一点。您可以在PHP中去掉整数和名称,添加整数,然后追加回名称。学习
substr
命令。抱歉,您的查询有点笼统,这是我能给您的最好答案,这就是为什么我们应该使用1NF()不,不是,只是使用上面的名称作为例子。我已经更新了答案,告诉您如何使用可变长度前缀。