mysql选择单元格中每个单词的第一个字母

标签 mysql

我想返回名为“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/

相关文章:

php - MySQL JOIN 使用 where 子句和按计数分组

mysql - 使用 MAMP 设置 MySQL Workbench - 缺少 'mysql.sock' 文件

sql - 子查询并为 MySQL 中的多个外键选择最旧的行

mysql - SQL显示列表中不同的记录

EAV 表中的 MySQL 排序错误

PHP 从单选数据中获取输入并插入到 MySQL 表中

mysql - 我应该设置什么 COLLATE 来使用所有可能的语言?

javascript - 如何使用 ajax 从下拉菜单更新 mysql 数据库

mysql - 原始删除查询

php - 无法将 PHP 应用程序与 MySQL 连接