Mysql SQL:我需要将字符串分解为&燃气轮机&引用;并且要删除最后一个线程,并在CamelCase中用空格替换(-)
我拥有的字符串如下所示,我需要驼峰格式的输出,如下所示Mysql SQL:我需要将字符串分解为&燃气轮机&引用;并且要删除最后一个线程,并在CamelCase中用空格替换(-),mysql,Mysql,我拥有的字符串如下所示,我需要驼峰格式的输出,如下所示 For example: compact-cameras>ixus>digital-ixus-160 compact-cameras>ixus>digital-ixus-160>DSLR scanners>document-scanners>dr-6030c Output: Compact cameras>ixus Compact Cameras>Ixus>Digital Ixu
For example:
compact-cameras>ixus>digital-ixus-160
compact-cameras>ixus>digital-ixus-160>DSLR
scanners>document-scanners>dr-6030c
Output:
Compact cameras>ixus
Compact Cameras>Ixus>Digital Ixus 160
Scanners>Document Scanner
您可以通过下面的语句删除字符串的最后一部分并删除“-”,然后使用驼峰大小写函数作为提供的链接--
我试过这个,效果很好
DROP FUNCTION IF EXISTS UC_Words;
DELIMITER ||
CREATE FUNCTION `UC_Words`( str VARCHAR(255) ) RETURNS VARCHAR(255)
BEGIN
DECLARE c CHAR(1);
DECLARE s VARCHAR(255);
DECLARE i INT DEFAULT 1;
DECLARE bool INT DEFAULT 1;
DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:>?/';
SET s = LCASE( str );
WHILE i < LENGTH( str ) DO
BEGIN
SET c = SUBSTRING( s, i, 1 );
IF LOCATE( c, punct ) > 0 THEN
SET bool = 1;
ELSEIF bool=1 THEN
BEGIN
IF c >= 'a' AND c <= 'z' THEN
BEGIN
SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
SET bool = 0;
END;
ELSEIF c >= '0' AND c <= '9' THEN
SET bool = 0;
END IF;
END;
END IF;
SET i = i+1;
END;
END WHILE;
RETURN s;
END ||
DELIMITER ;
SELECT UC_Words(REPLACE(SUBSTRING_INDEX('compact-cameras>ixus>digital-ixus-160>xyz>pqr', '>', LENGTH(SUBSTRING_INDEX('compact-cameras>ixus>digital-ixus-160>xyz>pqr>khanasim', '>',-1))+1), '-',' '));
如果存在UC_字,则删除函数;
分隔符| |
创建函数“UC_Words”(str VARCHAR(255))返回VARCHAR(255)
开始
声明c字符(1);
声明s VARCHAR(255);
声明i INT默认值为1;
声明bool INT默认值为1;
声明点字符(17)默认值“()[]{},.-!@;:>?/”;
设置s=LCASE(str);
而我<长度(str)做
开始
集合c=子串(s,i,1);
如果定位(c,点)>0,则
设置bool=1;
ELSEIF bool=1那么
开始
如果c>='a'和c='0'以及c bro,我需要删除最后一个字符串,我也尝试过删除字符串选择子字符串索引(子字符串索引('compact-cameras>ixus>digital-ixus-160>xyz>pqr','>',3),'-1);但是,如何通过移除最后一条线来获得线的长度我正在获取最后一个紧凑型相机>Ixus>数字Ixus 160>我还需要移除最后一条线
DROP FUNCTION IF EXISTS UC_Words;
DELIMITER ||
CREATE FUNCTION `UC_Words`( str VARCHAR(255) ) RETURNS VARCHAR(255)
BEGIN
DECLARE c CHAR(1);
DECLARE s VARCHAR(255);
DECLARE i INT DEFAULT 1;
DECLARE bool INT DEFAULT 1;
DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:>?/';
SET s = LCASE( str );
WHILE i < LENGTH( str ) DO
BEGIN
SET c = SUBSTRING( s, i, 1 );
IF LOCATE( c, punct ) > 0 THEN
SET bool = 1;
ELSEIF bool=1 THEN
BEGIN
IF c >= 'a' AND c <= 'z' THEN
BEGIN
SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));
SET bool = 0;
END;
ELSEIF c >= '0' AND c <= '9' THEN
SET bool = 0;
END IF;
END;
END IF;
SET i = i+1;
END;
END WHILE;
RETURN s;
END ||
DELIMITER ;
SELECT UC_Words(REPLACE(SUBSTRING_INDEX('compact-cameras>ixus>digital-ixus-160>xyz>pqr', '>', LENGTH(SUBSTRING_INDEX('compact-cameras>ixus>digital-ixus-160>xyz>pqr>khanasim', '>',-1))+1), '-',' '));