如何在MySQL中为带空格的公司名称生成首字母缩写
MySQL生成公司名称首字母缩写方案
针对1-5个单词组成的空格分隔公司名称,可通过自定义MySQL函数提取每个单词首字母并生成大写缩写,示例如下:
自定义函数实现
DELIMITER // CREATE FUNCTION get_company_abbrev(company_name VARCHAR(255)) RETURNS VARCHAR(5) DETERMINISTIC BEGIN DECLARE abbrev VARCHAR(5) DEFAULT ''; DECLARE remaining_str VARCHAR(255) DEFAULT company_name; DECLARE current_word VARCHAR(255); -- 提取第一个单词首字母 IF LOCATE(' ', remaining_str) > 0 THEN SET current_word = LEFT(remaining_str, LOCATE(' ', remaining_str) - 1); SET abbrev = CONCAT(abbrev, UPPER(LEFT(current_word, 1))); SET remaining_str = SUBSTRING(remaining_str, LOCATE(' ', remaining_str) + 1); ELSE SET abbrev = CONCAT(abbrev, UPPER(LEFT(remaining_str, 1))); RETURN abbrev; END IF; -- 提取第二个单词首字母 IF LOCATE(' ', remaining_str) > 0 THEN SET current_word = LEFT(remaining_str, LOCATE(' ', remaining_str) - 1); SET abbrev = CONCAT(abbrev, UPPER(LEFT(current_word, 1))); SET remaining_str = SUBSTRING(remaining_str, LOCATE(' ', remaining_str) + 1); ELSE SET abbrev = CONCAT(abbrev, UPPER(LEFT(remaining_str, 1))); RETURN abbrev; END IF; -- 提取第三个单词首字母 IF LOCATE(' ', remaining_str) > 0 THEN SET current_word = LEFT(remaining_str, LOCATE(' ', remaining_str) - 1); SET abbrev = CONCAT(abbrev, UPPER(LEFT(current_word, 1))); SET remaining_str = SUBSTRING(remaining_str, LOCATE(' ', remaining_str) + 1); ELSE SET abbrev = CONCAT(abbrev, UPPER(LEFT(remaining_str, 1))); RETURN abbrev; END IF; -- 提取第四个单词首字母 IF LOCATE(' ', remaining_str) > 0 THEN SET current_word = LEFT(remaining_str, LOCATE(' ', remaining_str) - 1); SET abbrev = CONCAT(abbrev, UPPER(LEFT(current_word, 1))); SET remaining_str = SUBSTRING(remaining_str, LOCATE(' ', remaining_str) + 1); ELSE SET abbrev = CONCAT(abbrev, UPPER(LEFT(remaining_str, 1))); RETURN abbrev; END IF; -- 提取第五个单词首字母 SET abbrev = CONCAT(abbrev, UPPER(LEFT(remaining_str, 1))); RETURN abbrev; END // DELIMITER ;
使用方法
在查询中调用函数即可生成缩写:
-- 替换your_table为实际表名,company_name为存储公司名称的字段名 SELECT company_name, get_company_abbrev(company_name) AS company_abbrev FROM your_table;
说明
- 函数自动处理1-5个单词的名称,单词数不足5个时会提前终止并返回对应长度的缩写
- 所有首字母自动转为大写,符合示例中的格式要求
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

