Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL:我需要将字符串分解为&燃气轮机&引用;并且要删除最后一个线程,并在CamelCase中用空格替换(-)_Mysql - Fatal编程技术网

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), '-',' '));