我曾经看过一个MySQL结果,其中一个获取的数量以*
显示为条形图。这样的事情。
id | amount | bar
----------------------------
1 | 7 | *******
2 | 4 | ****
3 | 0 |
4 | 3 | ***
5 | 9 | *********
6 | 10 | **********
7 | 6 | ******
8 | 3 | ***
9 | 2 | **
10| 0 |
如果我没记错的话,那就是查询中使用的某种RANGE()
函数,比如
SELECT
`id`,
COUNT(*) AS `amount`,
RANGE(`amount`) AS `bar`
FROM
`table`
但我在google或SO上都没有成功的研究。任何人都知道如何做到这一点,或者可以转发给相应的SO帖子?
答案 0 :(得分:1)
Strawberry有线索in his comment。我正在寻找的函数名称是REPEAT()
。我有趣的是在MySQL文档中找不到它,所以我指的是w3resource(如果有人能找到官方文档,请随时编辑)。
语法
REPEAT(str, count)
str
要重复的字符串。count
一个整数,表示字符串str重复的次数。
因此可以像这样使用该功能
SELECT
`id`,
COUNT(*) AS `amount`,
REPEAT('#' , COUNT(`amount`)) AS `bar`
FROM
`table`
返回类似
的输出id | amount | bar
----------------------------
1 | 4 | ####
2 | 14 | ##############
3 | 8 | ########
4 | 5 | #####
5 | 3 | ###
6 | 11 | ###########
count
参数也可用于拉伸或缩小条形,例如通过乘法 - 或除法,像这样
...
REPEAT('#', COUNT(`amount`)/4)) AS `bar`
...
会返回这样的内容
id | amount | bar
----------------------
1 | 20 | #####
2 | 12 | ###
3 | 32 | ########