仅从mySQL中的特定字符的左侧和右侧获取字符

时间:2011-10-22 01:04:06

标签: mysql string locate

我有一个列表,其中一个变量是Player,如果有一个玩家名字然后是“_”,那么姓氏就像这样:

Mike_Gonzalez

我想从播放器变量中创建两个新变量。第一个变量是firstName,所以我希望所有字符都在“”的左边。第二个变量是lastName,它将是“”右侧的所有字符。

我尝试过使用LEFT(播放器,LOCATE('_',播放器)),但是当我这样做时,新变量包含_。

如何在没有_的情况下运行代码来获取名字和姓氏?

感谢您的帮助。

3 个答案:

答案 0 :(得分:8)

除了将LEFT()RIGHT()LOCATE()结合使用外,您还可以使用 SUBSTRING_INDEX()

SELECT
    SUBSTRING_INDEX(Player, '_', 1) AS FirstName
  , SUBSTRING_INDEX(Player, '_', -1) AS LastName

答案 1 :(得分:3)

LEFT(Player, (LOCATE('_', Player) - 1))

您只需将LEFT中第二个参数的值基本减少1即可排除_

答案 2 :(得分:0)

select distinct left(HOST,locate (':',HOST)-1) CONNECTED_HOST 
from information_schema.processlist 
where User != 'root' 
order by 1;