Я знаю, что это немного поздно для игры, но я хотел предложить нефункциональный способ сделать это для тех из вас, кто создает представление или файл .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
Это два шага, и вы должны включить строку условной подстроки () для каждого слова, которое вы ожидаете найти в строке, но это всего лишь копия, вставка и приращение значения сравнения для @spaces.Однако мои требования для этого могут быть немного слабее, чем некоторые.Несмотря на это, он работает и не вызывает заметных проблем со скоростью.