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

标签 mysql

我有一个 MySQL 数据库,其中有一列 mystring varchar(255)

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

例如,“AbcDeF”包含 3 个大写字母,“XYZZ”包含 4 个大写字母。

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

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

在 MySQL 中可以吗?

最佳答案

这个结果可以从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”到“Z”,但我们使用 CHAR_LENGTH 函数来处理多字节 UTF编码。

关于mysql:计算字符串中大写字母的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119579/

相关文章:

php - 如何调试 php/MySQL COUNT(id) 返回 1 而不是总条目值

mysql - 什么情况下外键不能为空?

php - ajax 保存在数据库中,无需外键

mysql - SQL查询以获取相邻记录之间的差异

PHP。输入密码点击按钮

php - 我正在尝试将一个文件上传到本地主机,但无法正常工作

mysql - 加快缓慢的 MySQL 子查询更新

java - JDBC 中的 ClassNotFoundException

php - 如何将 NULL 值从 PHP 变量插入 MySQL,远离 SQL 注入(inject)?

php - 如何在 PDO 中使用数组插入/更新?