如何在MySQL中实现initcap功能? [英] How can I achieve initcap functionality in MySQL?

查看:100
本文介绍了如何在MySQL中实现initcap功能?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要用于区域名称的initcap功能.有什么方法可以在MySQL中实现?

I need the functionality of initcap for the region names. Is there any way to achieve this in MySQL?

  • 非洲
  • 印度次大陆
  • 美国西海岸
  • 欧洲/英国

这样结果可以吗?有什么建议?预先感谢.

in this way the results can be? Any suggestions? Thanks in advance.

推荐答案

有时我在MySQL中寻找内置的initcap/ucfirst函数,但不幸的是找不到这样的字符串函数,所以决定自己编写.感谢MySQL社区成员纠正了我的功能&中的错误.将其发布回去.

Sometime back I was looking for a built-in initcap/ucfirst function in MySQL but unfortunately couldn't find such string functions so decided to write my own.. thanks to the MySQL community member who corrected the bug in my function & posted it back.

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`initcap`$$

CREATE FUNCTION `initcap`(x char(30)) RETURNS char(30) CHARSET utf8
BEGIN
SET @str='';
SET @l_str='';
WHILE x REGEXP ' ' DO
SELECT SUBSTRING_INDEX(x, ' ', 1) INTO @l_str;
SELECT SUBSTRING(x, LOCATE(' ', x)+1) INTO x;
SELECT CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(@l_str,1,1)),LOWER(SUBSTRING(@l_str,2)))) INTO @str;
END WHILE;
RETURN LTRIM(CONCAT(@str, ' ', CONCAT(UPPER(SUBSTRING(x,1,1)),LOWER(SUBSTRING(x,2)))));
END$$

DELIMITER ;


Usage: 

select initcap('This is test string');

这篇关于如何在MySQL中实现initcap功能?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆