Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6643043
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Mysql/postgreSQL

2012-09-06 15:08:36

大家都知道,Oracle,PostgreSQL等数据库中有将所有单词首字母变大写的功能函数initcap,但是MySQL没有,今天写了一个。分享:

点击(此处)折叠或打开

  1. delimiter //
  2. drop function initcap//
  3. create function initcap(ss varchar(1000)) returns varchar(1000)
  4. begin
  5. declare lena int;
  6. declare pos int;
  7. declare firsta char(1);
  8. declare seconda varchar(999);
  9. declare tmpstr varchar(1000);
  10. declare retstr varchar(1000);
  11. if (length(trim(ss)) = 0) then
  12.    return '';
  13. end if;
  14. if (right(ss,1) != ' ') then
  15.     set ss=concat(ss,' ');
  16. end if;
  17. set pos=instr(ss,' ');
  18. set lena=length(ss);
  19. while (pos > 0) do
  20.    set tmpstr=trim(left(ss,pos));
  21.    set ss = right(ss,lena - pos );
  22.    set lena = length(tmpstr);
  23.    set firsta = upper(left(tmpstr,1));
  24.    set seconda = lower(right(tmpstr,lena - 1));
  25.    if (length(retstr) > 0) then
  26.        set retstr = concat(retstr,' ',firsta,seconda);
  27.    else
  28.        set retstr = concat(firsta,seconda);
  29.    end if;
  30.    set pos = instr(ss,' ');
  31.    set lena = length(ss);
  32. end while;
  33. return retstr;
  34. end;
  35. //
  36. delimiter ;
阅读(7846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~