计算字符串中的大写字母 [英] Count capital letters in String

查看:149
本文介绍了计算字符串中的大写字母的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用MySQL查询来计算大写字母? 我目前正在

How can i count Capital letters with a MySQL-query? I'm trying it at the moment with

COUNT(IF(MATCH(post_text) AGAINST('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'),1,NULL))

但这给了我一个错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U' at line 4

我想,我不允许在糟透了的AGAINST子句中使用列表

I guess, I'm not allowed not use lists in the AGAINST clauses which sucks

那么,有没有办法实现这一目标?

So, is there a way to achieve this?

推荐答案

尝试使用此功能-

DELIMITER $$

CREATE FUNCTION cnt_up_case(str VARCHAR(255))
RETURNS VARCHAR(255)
NOT DETERMINISTIC
CONTAINS SQL
BEGIN

  SET @cnt = 0;
  SET @len = length(str);
  SET @i = 1;

  WHILE @i <= @len
  DO
    SET @c = substring(str, @i, 1);
    IF ascii(@c) > 64 AND ascii(@c) < 91 THEN
      SET @cnt = @cnt + 1;
    END IF;

    SET @i = @i + 1;
  END WHILE;

  RETURN @cnt;
END
$$

DELIMITER ;

示例:

SET @Param1 = 'AbCdE';
SET @ResultValue = cnt_up_case(@Param1);
SELECT @ResultValue;
--------------
3

这篇关于计算字符串中的大写字母的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆