這可以通過一些字符串操作猴子業務來完成。但是您需要使用等寬字體顯示生成的文本字符串。在許多字體中,空格字符佔用的星星字符的空間較少,因此如果以這種方式顯示這些星星串,零點將不會排列正確。
首先,如果value
是-5
,則表達式IF(value<0, -value, 0)
將產生5
,否則爲零。
二,表達式REPEAT('*', IF(value<0,-value,0))
會從你的那個-5
值中連續得到五顆星,並且沒有任何正值的星星。
第三,REVERSE(RPAD(REPEAT('*', IF(value<0,-value,0)), 20, ' '))
會得到一個20個字符長的文本字符串,並以一連串的五個星號結尾。這就是你如何做你的小圖表的負面部分。
最後,連接到REPEAT('*',IF(value<0,0,value))
以獲得對value
的正實例有用的內容。
這應該爲你做。
SELECT id,
value,
CONCAT(REVERSE(RPAD(REPEAT('*', IF(value<0,-value,0)), 20, '=')),
REPEAT('*',IF(value<0,0,value))
) AS histogram
FROM t
ORDER BY id
請注意,我硬編碼20
作爲最大的負值將在這裏工作。如果需要,你可以做更復雜的事情。