我想返回名为“initials”的 MySQL 列中每个单词的第一个字母。
例如,我的表格可能是这样的:
| project_unit | initials |
+---------------------------------------+----------+
| Mbita Clinic Rehabilitation | MCR |
| Management Strategy for Thrips Cowpea | MSTC |
有什么建议吗?
最佳答案
您可以使用下面提到的功能来实现您的要求。
DELIMITER $$
CREATE FUNCTION split_string(split_string varchar(255),my_delimiter varchar(1)) RETURNS varchar(10)
BEGIN
DECLARE temp_string varchar(255);
DECLARE occurance INT;
DECLARE i INT;
DECLARE temp_result varchar(10);
DECLARE final_result varchar(10);
SET temp_result = '';
SET occurance=length(split_string)-length(replace(split_string,' ',''))+1;
IF occurance > 0 then
set i=1;
while i <= occurance do
set temp_string = (select SUBSTRING_INDEX(SUBSTRING_INDEX(split_string, my_delimiter, i),my_delimiter ,-1));
set temp_result = CONCAT(temp_result, SUBSTRING(temp_string,1,1));
set i=i+1;
end while;
ELSE
set temp_result = SUBSTRING(split_string,1,1);
END IF;
set occurance=0;
SET final_result = temp_result;
RETURN (final_result);
END $$
DELIMITER ;
你可以这样使用它:
SELECT Projcect_unit, split_string(Project_unit,' ') as initials FROM main_table;
关于mysql选择单元格中每个单词的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27292099/