我有一个带有mystring varchar(255)
列的MySQL数据库。
我想知道的是标准拉丁大写字母的出现(' A'到' Z')。
例如" AbcDeF"数量为3个字母和" XYZZ"包含4。
基本上我想计算数据库中的值,其形式为:
SELECT count_characters(mystring, 'A', 'Z') FROM mytable;
在MySQL可以吗?
答案 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编码。