mysql:计算字符串中大写字母的出现次数

时间:2015-01-23 22:12:12

标签: mysql

我有一个带有mystring varchar(255)列的MySQL数据库。

我想知道的是标准拉丁大写字母的出现(' A'到' Z')。

例如" AbcDeF"数量为3个字母和" XYZZ"包含4。

基本上我想计算数据库中的值,其形式为:

SELECT count_characters(mystring, 'A', 'Z') FROM mytable;

在MySQL可以吗?

1 个答案:

答案 0 :(得分:1)

此结果可以从MySQL返回。这不是不可能,但它是彻头彻尾的丑陋。为了使这个更漂亮,你需要在用户定义的函数中隐藏丑陋。

您可以使用REPLACE函数进行区分大小写的搜索,以使用零长度字符串替换特定字符。对要计算的每个特定字符重复此操作。然后获取结果字符串的字符长度,并从原始字符串的字符长度中减去该字符串。不同之处在于被替换的字符数(这是您想要计算的字符数)。

例如,要从表格中的每一行获取特定列的大写字母“A”到“D”的计数...

  SELECT CHAR_LENGTH(t.mycol) -
         CHAR_LENGTH(
            REPLACE(
            REPLACE(
            REPLACE(
            REPLACE(
              t.mycol
            ,'A','')
            ,'B','')
            ,'C','')
            ,'D','')
         ) AS count_characters
    FROM mytable t

这很难看,但会返回指定的结果。

注意:LENGTH函数适用于拉丁字符'A'thru'Z',但我们使用CHAR_LENGTH函数来预期处理多字节UTF编码。

相关问题