截断MYSQL中的字段

时间:2016-06-27 11:31:10

标签: mysql

字段名称没有被截断的问题。我在一个网站上显示一个排行榜,而名字很长的玩家正在打破这个桌面。我尝试了以下,但无济于事。希望有人可以提供帮助!

select 
    case
        when char_length('player_name') >= 13 then left('player_name', 12) + '...'
        else player_name
    end player_name,
    case
        when char_length('squad') >= 10 then left('squad', 10)
        else squad
    end squad,
    pub_rank
from
    database.player_rank
order by pub_rank desc
limit 10;

以下是一些示例数据。我在PHP中添加了行#' s。有些球员没有球队。

player_name squad player_rank Kalu 1st line 106.70 Jugu Cobra 96.29 BOG Blood 87.52 vai cavalo 87.09 Ebony&Ivory Bury 85.80 Taunt BlameTaunt 83.44 7461756e74207375636 82.98 Tut 82.03 baddreams 81.09 Tryo Team Gluten 80.40 `

请,谢谢!

2 个答案:

答案 0 :(得分:1)

在列周围使用反引号。使用concat()来连接值和字符串。

select 
    case when char_length(`player_name`)>=13 
        then CONCAT(left(`player_name`, 12), '...') 
    else player_name end player_name, 

    case when char_length(`squad`)>=10 
        then left(`squad`, 10) 
    else squad end squad, 

pub_rank from database.player_rank 
order by pub_rank desc limit 10;

修改

http://sqlfiddle.com/#!9/cc789/3我用查询构建了这个小提琴。可能已经更改了一些名称并使用其他数字进行查询,但它显示了必须完成的操作 - >用于连接的concat()和用于表名的“`”

答案 1 :(得分:0)

试试这个

  

选择if(char_length(' player_name')> = 13,left(' player_name',12),   player_name)from database.player_rank order by pub_rank desc limit   10;

如果是一个条件,请使用一个