从mysql字符串列中删除数字/数字字符

时间:2010-07-05 08:16:13

标签: mysql

我在mysql表中有一些列,它们将人的名字存储为字符串的组合,并为唯一性存储增加的数字,因此我将名称存储为:

Patrick, Patrick1, Patrick2, ..... Patrick10, David, David2, .... David5

如何只检索字母名称本身,没有数字?假设我想按不同的名称进行分组,并按组计数,因此我得到的结果类似于以下内容。

name    | frequency
-----------------
Patrick | 10
David   | 5

4 个答案:

答案 0 :(得分:1)

解决方案就是这样:(它看起来不太好,但它有效)

SELECT 
  TRIM(TRAILING '0' FROM 
    TRIM(TRAILING '1' FROM 
      TRIM(TRAILING '2' FROM 
        TRIM(TRAILING '3' FROM 
          -- ... 
            TRIM(TRAILING '8' FROM 
              TRIM(TRAILING '9' FROM name)))))) AS name
FROM your_table

然后您可以从结果中选择GROUP BY:

SELECT name, count(*) AS frequency FROM (
-- previous select
) AS t
GROUP BY name

答案 1 :(得分:0)

我会稍微考虑一下,但我建议如果你需要一个有区别的数字,你可以将它保存在不同的栏目中。这样,你就不会遇到这种困难。

答案 2 :(得分:0)

您可以使用udf

然后尝试下面的内容

select REGEX_REPLACE(name, [0-9], '') as Name, Count(Name) 
      from tableName  
      Group by Name

答案 3 :(得分:0)

您可以像这样“链接”替换命令(这将删除查询中的数字0,1,2)。您可以将其扩展为其他数字,但我不知道这是否会在大型数据集上表现得非常好:

从用户中选择替换(替换(替换(名称,“0”,“”),“1”,“”),“2”,“”);

我也会想,做Brian建议会更好。