如何在mysql中从字符串中获取第一个字母?

如何在mysql中从字符串中获取第一个字母?,mysql,Mysql,我有一张桌子叫叶子 id leave_name status 1 Casual Leave 0 2 Sick Leave 0 我需要获取休假姓名的首字母,如CL,SL 我尝试了LEFT(),但字符串长度不是预定义的。这里有一个明显的边缘情况,如果LEFT名称包含两个以上的术语,就会出现这种情况。我假设您只需要前两个单词的首字母,不管出现多少个 SELECT CASE WHEN INSTR(leave_name, ' ') > 0

我有一张桌子叫叶子

id    leave_name     status

 1   Casual Leave     0

 2   Sick Leave       0
我需要获取休假姓名的首字母,如CL,SL


我尝试了LEFT(),但字符串长度不是预定义的。

这里有一个明显的边缘情况,如果LEFT名称包含两个以上的术语,就会出现这种情况。我假设您只需要前两个单词的首字母,不管出现多少个

SELECT
    CASE WHEN INSTR(leave_name, ' ') > 0 THEN
         CONCAT(LEFT(leave_name, 1),
                SUBSTRING(leave_name, INSTR(leave_name, ' ') + 1, 1))
         ELSE LEFT(leave_name, 1) END AS initials
FROM yourTable;
我还添加了一个边缘案例的覆盖范围,当只有一个单词出现时。在本例中,我们只取该单词的单个首字母


虽然可以在sql中使用子字符串_index()执行此操作,但我会在应用程序逻辑中执行此操作。Mysql的字符串操作函数没有那么高效。此外,如果您的假期姓名超过2个单词,则很难处理。这可能有助于: