mysql金額小寫轉大寫

create function to_china_num(MONEY decimal(14, 2)) returns varchar(150)
BEGIN
	declare RV_MONEY0 VARCHAR(20);
	declare RV_MONEY1 VARCHAR(4);
	declare RV_MONEY2 VARCHAR(4);
	declare V_MONEY0 VARCHAR(28);
	declare V_MONEY1 VARCHAR(4);
	declare V_MONEY2 VARCHAR(4);
	declare V_MONEY3 VARCHAR(4);
	declare V_MONEY4 VARCHAR(4);
	declare V_MONEY5 VARCHAR(4);
	declare V_MONEY6 VARCHAR(4);
	declare V_MONEY7 VARCHAR(4);
	declare V_MONEY8 VARCHAR(4);
	declare V_MONEY9 VARCHAR(4);
	declare V_MONEY10 VARCHAR(4);
	declare V_MONEY11 VARCHAR(4);
	declare V_MONEY12 VARCHAR(4);
	declare RPV_MONEY1 VARCHAR(4);
	declare RPV_MONEY2 VARCHAR(4);
	declare PV_MONEY0 VARCHAR(14);
	declare PV_MONEY1 VARCHAR(4);
	declare PV_MONEY2 VARCHAR(4);
	declare PV_MONEY3 VARCHAR(4);
	declare PV_MONEY4 VARCHAR(4);
	declare PV_MONEY5 VARCHAR(4);
	declare PV_MONEY6 VARCHAR(4);
	declare PV_MONEY7 VARCHAR(4);
	declare PV_MONEY8 VARCHAR(4);
	declare PV_MONEY9 VARCHAR(4);
	declare PV_MONEY10 VARCHAR(4);
	declare PV_MONEY11 VARCHAR(4);
	declare PV_MONEY12 VARCHAR(4);
	declare Z_MONEY VARCHAR(28);
	set Z_MONEY=FLOOR(MONEY);
	set V_MONEY0=LTRIM(RTRIM(Z_MONEY));
	set Z_MONEY=FLOOR(MONEY*100);
	set RV_MONEY0=LTRIM(RTRIM(Z_MONEY));
	set RV_MONEY1=SUBSTR(RV_MONEY0,LENGTH(RV_MONEY0),1);
	IF LENGTH(RV_MONEY0)>1 THEN
		set RV_MONEY2=SUBSTR(RV_MONEY0,LENGTH(RV_MONEY0)-1,1);
	ELSE
		set RV_MONEY2='0';
	END IF;
	set V_MONEY1=SUBSTR(V_MONEY0,LENGTH(V_MONEY0),1);
	IF LENGTH(V_MONEY0)-1>0 THEN
		set V_MONEY2=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-1,1);
	ELSE
		set V_MONEY2='0';
	END IF;
	IF LENGTH(V_MONEY0)-2>0 THEN
		set V_MONEY3=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-2,1);
	ELSE
		set V_MONEY3='0';
	END IF;
	IF LENGTH(V_MONEY0)-3>0 THEN
		set V_MONEY4=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-3,1);
	ELSE
		set V_MONEY4='0';
	END IF;
	IF LENGTH(V_MONEY0)-4>0 THEN
		set V_MONEY5=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-4,1);
	ELSE
		set V_MONEY5='0';
	END IF;
	IF LENGTH(V_MONEY0)-5>0 THEN
		set V_MONEY6=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-5,1);
	ELSE
		set V_MONEY6='0';
	END IF;
	IF LENGTH(V_MONEY0)-6>0 THEN
		set V_MONEY7=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-6,1);
	ELSE
		set V_MONEY7='0';
	END IF;
	IF LENGTH(V_MONEY0)-7>0 THEN
		set V_MONEY8=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-7,1);
	ELSE
		set V_MONEY8='0';
	END IF;
	IF LENGTH(V_MONEY0)-8>0 THEN
		set V_MONEY9=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-8,1);
	ELSE
		set V_MONEY9='0';
	END IF;
	IF LENGTH(V_MONEY0)-9>0 THEN
		set V_MONEY10=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-9,1);
	ELSE
		set V_MONEY10='0';
	END IF;
	IF LENGTH(V_MONEY0)-10>0 THEN
		set V_MONEY11=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-10,1);
	ELSE
		set V_MONEY11='0';
	END IF;
	IF LENGTH(V_MONEY0)-11>0 THEN
		set V_MONEY12=SUBSTR(V_MONEY0,LENGTH(V_MONEY0)-11,1);
	ELSE
		set V_MONEY12='0';
	END IF;
	select if(RV_MONEY1='0','零分',if(RV_MONEY1='1','壹分',if(RV_MONEY1='2','貳分',if(RV_MONEY1='3','叄分',
	if(RV_MONEY1='4','肆分',if(RV_MONEY1='5','伍分',if(RV_MONEY1='6','陸分',if(RV_MONEY1='7','柒分',if(
	RV_MONEY1='8','捌分','玖分'))))))))) into rpv_money1;
	select if(RV_MONEY2='0','零角',if(RV_MONEY2='1','壹角',if(RV_MONEY2='2','貳角',if(RV_MONEY2='3','叄角',
	if(RV_MONEY2='4','肆角',if(RV_MONEY2='5','伍角',if(RV_MONEY2='6','陸角',if(RV_MONEY2='7','柒角',if(
	RV_MONEY2='8','捌角','玖角'))))))))) into rpv_money2;
	select if(V_MONEY1='0','元',if(V_MONEY1='1','壹元',if(V_MONEY1='2','貳元',if(V_MONEY1='3','叄元',
	if(V_MONEY1='4','肆元',if(V_MONEY1='5','伍元',if(V_MONEY1='6','陸元',if(V_MONEY1='7','柒元',if(
	V_MONEY1='8','捌元','玖元'))))))))) into pv_money1;
	select if(V_MONEY2='0','',if(V_MONEY2='1','壹拾',if(V_MONEY2='2','貳拾',if(V_MONEY2='3','叄拾',
	if(V_MONEY2='4','肆拾',if(V_MONEY2='5','伍拾',if(V_MONEY2='6','陸拾',if(V_MONEY2='7','柒拾',if(
	V_MONEY2='8','捌拾','玖拾'))))))))) into pv_money2;
	select if(V_MONEY3='0','',if(V_MONEY3='1','壹佰',if(V_MONEY3='2','貳佰',if(V_MONEY3='3','叄佰',
	if(V_MONEY3='4','肆佰',if(V_MONEY3='5','伍佰',if(V_MONEY3='6','陸佰',if(V_MONEY3='7','柒佰',if(
	V_MONEY3='8','捌佰','玖佰'))))))))) into pv_money3;
	select if(V_MONEY4='0','',if(V_MONEY4='1','壹仟',if(V_MONEY4='2','貳仟',if(V_MONEY4='3','叄仟',
	if(V_MONEY4='4','肆仟',if(V_MONEY4='5','伍仟',if(V_MONEY4='6','陸仟',if(V_MONEY4='7','柒仟',if(
	V_MONEY4='8','捌仟','玖仟'))))))))) into pv_money4;
	select if(V_MONEY5='0','萬',if(V_MONEY5='1','壹萬',if(V_MONEY5='2','貳萬',if(V_MONEY5='3','叄萬',
	if(V_MONEY5='4','肆萬',if(V_MONEY5='5','伍萬',if(V_MONEY5='6','陸萬',if(V_MONEY5='7','柒萬',if(
	V_MONEY5='8','捌萬','玖萬'))))))))) into pv_money5;
	select if(V_MONEY6='0','',if(V_MONEY6='1','壹拾',if(V_MONEY6='2','貳拾',if(V_MONEY6='3','叄拾',
	if(V_MONEY6='4','肆拾',if(V_MONEY6='5','伍拾',if(V_MONEY6='6','陸拾',if(V_MONEY6='7','玖拾',if(
	V_MONEY6='8','捌拾','玖萬'))))))))) into pv_money6;
	select if(V_MONEY7='0','',if(V_MONEY7='1','壹佰',if(V_MONEY7='2','貳佰',if(V_MONEY7='3','叄佰',
	if(V_MONEY7='4','肆佰',if(V_MONEY7='5','伍佰',if(V_MONEY7='6','陸佰',if(V_MONEY7='7','柒佰',if(
	V_MONEY7='8','捌佰','玖佰'))))))))) into pv_money7;
	select if(V_MONEY8='0','',if(V_MONEY8='1','壹仟',if(V_MONEY8='2','貳仟',if(V_MONEY8='3','叄仟',
	if(V_MONEY8='4','肆仟',if(V_MONEY8='5','伍仟',if(V_MONEY8='6','陸仟',if(V_MONEY8='7','柒仟',if(
	V_MONEY8='8','捌仟','玖仟'))))))))) into pv_money8;
	select if(V_MONEY9='0','億',if(V_MONEY9='1','壹億',if(V_MONEY9='2','貳億',if(V_MONEY9='3','叄億',
	if(V_MONEY9='4','肆億',if(V_MONEY9='5','伍億',if(V_MONEY9='6','陸億',if(V_MONEY9='7','柒億',if(
	V_MONEY9='8','捌億','玖億'))))))))) into pv_money9;
	select if(V_MONEY10='0','',if(V_MONEY10='1','壹拾',if(V_MONEY10='2','貳拾',if(V_MONEY10='3','叄拾',
	if(V_MONEY10='4','肆拾',if(V_MONEY10='5','伍拾',if(V_MONEY10='6','陸拾',if(V_MONEY10='7','玖拾',if(
	V_MONEY10='8','捌拾','玖萬'))))))))) into pv_money10;
	select if(V_MONEY11='0','',if(V_MONEY11='1','壹佰',if(V_MONEY11='2','貳佰',if(V_MONEY11='3','叄佰',
	if(V_MONEY11='4','肆佰',if(V_MONEY11='5','伍佰',if(V_MONEY11='6','陸佰',if(V_MONEY11='7','柒佰',if(
	V_MONEY11='8','捌佰','玖佰'))))))))) into pv_money11;
	select if(V_MONEY12='0','',if(V_MONEY12='1','壹仟',if(V_MONEY12='2','貳仟',if(V_MONEY12='3','叄仟',
	if(V_MONEY12='4','肆仟',if(V_MONEY12='5','伍仟',if(V_MONEY12='6','陸仟',if(V_MONEY12='7','柒仟',if(
	V_MONEY12='8','捌仟','玖仟'))))))))) into pv_money12;
	if RPV_MONEY2 = '零角' AND RPV_MONEY1 = '零分' THEN
		set V_MONEY0=CONCAT(PV_MONEY12,PV_MONEY11,PV_MONEY10,PV_MONEY9,PV_MONEY8,PV_MONEY7,PV_MONEY6,PV_MONEY5,PV_MONEY4,
		PV_MONEY3,PV_MONEY2,PV_MONEY1,'整');
	else
		set V_MONEY0=CONCAT(PV_MONEY12,PV_MONEY11,PV_MONEY10,PV_MONEY9,PV_MONEY8,PV_MONEY7,PV_MONEY6,PV_MONEY5,PV_MONEY4,
		PV_MONEY3,PV_MONEY2,PV_MONEY1,RPV_MONEY2,RPV_MONEY1);
	END IF;

	if SUBSTR(V_MONEY0,1,1)='億' then
		set V_MONEY0=SUBSTR(V_MONEY0,2,LENGTH(V_MONEY0)-1);
	end if;
	if SUBSTR(V_MONEY0,1,1)='萬' then
		set V_MONEY0=SUBSTR(V_MONEY0,2,LENGTH(V_MONEY0)-1);
	end if;
/* 判斷億和萬之間間隔的位數 locate */
	set V_MONEY0=REPLACE(V_MONEY0,'億萬','億');
/* 判斷億和元之間間隔的位數 locate */
	if locate('元',V_MONEY0)-locate('億',V_MONEY0)=2 then
		set V_MONEY0=REPLACE(V_MONEY0,'億壹','億零壹');
		set V_MONEY0=REPLACE(V_MONEY0,'億貳','億零貳');
		set V_MONEY0=REPLACE(V_MONEY0,'億叄','億零叄');
		set V_MONEY0=REPLACE(V_MONEY0,'億肆','億零肆');
		set V_MONEY0=REPLACE(V_MONEY0,'億伍','億零伍');
		set V_MONEY0=REPLACE(V_MONEY0,'億陸','億零陸');
		set V_MONEY0=REPLACE(V_MONEY0,'億柒','億零柒');
		set V_MONEY0=REPLACE(V_MONEY0,'億捌','億零捌');
		set V_MONEY0=REPLACE(V_MONEY0,'億玖','億零玖');
	end if;
	set V_MONEY0=REPLACE(V_MONEY0,'億壹拾','億零壹拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億貳拾','億零貳拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億叄拾','億零叄拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億肆拾','億零肆拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億伍拾','億零伍拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億陸拾','億零陸拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億柒拾','億零柒拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億捌拾','億零捌拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億玖拾','億零玖拾');
	set V_MONEY0=REPLACE(V_MONEY0,'億壹佰','億零壹佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億貳佰','億零貳佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億叄佰','億零叄佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億肆佰','億零肆佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億伍佰','億零伍佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億陸佰','億零陸佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億柒佰','億零柒佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億捌佰','億零捌佰');
	set V_MONEY0=REPLACE(V_MONEY0,'億玖佰','億零玖佰');
/* 判斷最後一個萬和元之間間隔的位數 */
	if locate('元',V_MONEY0)-locate('萬',V_MONEY0)=2 then
		set V_MONEY0=REPLACE(V_MONEY0,'萬壹','萬零壹');
		set V_MONEY0=REPLACE(V_MONEY0,'萬貳','萬零貳');
		set V_MONEY0=REPLACE(V_MONEY0,'萬叄','萬零叄');
		set V_MONEY0=REPLACE(V_MONEY0,'萬肆','萬零肆');
		set V_MONEY0=REPLACE(V_MONEY0,'萬伍','萬零伍');
		set V_MONEY0=REPLACE(V_MONEY0,'萬陸','萬零陸');
		set V_MONEY0=REPLACE(V_MONEY0,'萬柒','萬零柒');
		set V_MONEY0=REPLACE(V_MONEY0,'萬捌','萬零捌');
		set V_MONEY0=REPLACE(V_MONEY0,'萬玖','萬零玖');
	end if;
	set V_MONEY0=REPLACE(V_MONEY0,'萬壹拾','萬零壹拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬貳拾','萬零貳拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬叄拾','萬零叄拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬肆拾','萬零肆拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬伍拾','萬零伍拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬陸拾','萬零陸拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬柒拾','萬零柒拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬捌拾','萬零捌拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬玖拾','萬零玖拾');
	set V_MONEY0=REPLACE(V_MONEY0,'萬壹佰','萬零壹佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬貳佰','萬零貳佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬叄佰','萬零叄佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬肆佰','萬零肆佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬伍佰','萬零伍佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬陸佰','萬零陸佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬柒佰','萬零柒佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬捌佰','萬零捌佰');
	set V_MONEY0=REPLACE(V_MONEY0,'萬玖佰','萬零玖佰');
/* 判斷最後一個千和元之間間隔的位數 */
	if locate('元',V_MONEY0)-locate('仟',V_MONEY0)=2 then
		set V_MONEY0=REPLACE(V_MONEY0,'仟壹','仟零壹');
		set V_MONEY0=REPLACE(V_MONEY0,'仟貳','仟零貳');
		set V_MONEY0=REPLACE(V_MONEY0,'仟叄','仟零叄');
		set V_MONEY0=REPLACE(V_MONEY0,'仟肆','仟零肆');
		set V_MONEY0=REPLACE(V_MONEY0,'仟伍','仟零伍');
		set V_MONEY0=REPLACE(V_MONEY0,'仟陸','仟零陸');
		set V_MONEY0=REPLACE(V_MONEY0,'仟柒','仟零柒');
		set V_MONEY0=REPLACE(V_MONEY0,'仟捌','仟零捌');
		set V_MONEY0=REPLACE(V_MONEY0,'仟玖','仟零玖');
	end if;
	set V_MONEY0=REPLACE(V_MONEY0,'仟壹拾','仟零壹拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟貳拾','仟零貳拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟叄拾','仟零叄拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟肆拾','仟零肆拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟伍拾','仟零伍拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟陸拾','仟零陸拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟柒拾','仟零柒拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟捌拾','仟零捌拾');
	set V_MONEY0=REPLACE(V_MONEY0,'仟玖拾','仟零玖拾');
/* 判斷最後一個佰和元之間間隔的位數 */
	if locate('元',V_MONEY0)-locate('佰',V_MONEY0)=2 then
		set V_MONEY0=REPLACE(V_MONEY0,'佰壹','佰零壹');
		set V_MONEY0=REPLACE(V_MONEY0,'佰貳','佰零貳');
		set V_MONEY0=REPLACE(V_MONEY0,'佰叄','佰零叄');
		set V_MONEY0=REPLACE(V_MONEY0,'佰肆','佰零肆');
		set V_MONEY0=REPLACE(V_MONEY0,'佰伍','佰零伍');
		set V_MONEY0=REPLACE(V_MONEY0,'佰陸','佰零陸');
		set V_MONEY0=REPLACE(V_MONEY0,'佰柒','佰零柒');
		set V_MONEY0=REPLACE(V_MONEY0,'佰捌','佰零捌');
		set V_MONEY0=REPLACE(V_MONEY0,'佰玖','佰零玖');
	end if;

	if SUBSTR(V_MONEY0,LENGTH(V_MONEY0)/2-1,1)='零' then
		set V_MONEY0=SUBSTR(V_MONEY0,1,LENGTH(V_MONEY0)/2-2);
	end if;
	if SUBSTR(V_MONEY0,LENGTH(V_MONEY0)/2-1,1)='零' then
		set V_MONEY0=SUBSTR(V_MONEY0,1,LENGTH(V_MONEY0)/2-2);
		set V_MONEY0=CONCAT(V_MONEY0,'整');
	end if;
/* 判斷有沒有零角,有就替換成零 */
	set V_MONEY0=REPLACE(V_MONEY0,'零角','零');
	if V_MONEY0='元整' then
		set V_MONEY0='零元';
	end if;
	return V_MONEY0;
END;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章