我有一个 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/