我知道这对游戏来说有点晚了,但我想为那些创建视图或 .sql 文件以供定期使用的人提供一种非功能性的方法:
SELECT
@spaces:= length(fi.FacilityName) - length(replace(fi.FacilityName,' ','')) as spaces,
concat(left(fi.FacilityName,1),
if(@spaces > 0, substring(fi.FacilityName,@pos:=locate(' ',fi.FacilityName)+1,1),''),
if(@spaces > 1, substring(fi.FacilityName,@pos:=locate(' ',fi.FacilityName, @pos)+1,1),''),
if(@spaces > 2, substring(fi.FacilityName,@pos:=locate(' ',fi.FacilityName,@pos)+1,1),''),
if(@spaces > 3, substring(fi.FacilityName,@pos:=locate(' ',fi.FacilityName,@pos)+1,1),''),
if(@spaces > 4, substring(fi.FacilityName,@pos:=locate(' ',fi.FacilityName,@pos)+1,1),'')) as initials
from facilityInfo fi
这是两个步骤,您必须为您预期在字符串中的每个单词包含一个条件 substring() 行,但这只是 @spaces 比较值的复制、粘贴和增量。但是,我对这样做的要求可能比某些要求要宽松一些。无论如何,它可以工作并且不会导致明显的速度问题。