程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql利用存儲過程實現類似split的效果

mysql利用存儲過程實現類似split的效果

編輯:MySQL綜合教程

mysql利用存儲過程實現類似split的效果   問題前景:         數據庫存在關鍵字以“;”隔開,查詢的結果集按關鍵字幅出現的次數降序排列,並按單個關鍵詞在頁面展示。以下為存儲過程  Java代碼   CREATE PROCEDURE `proc_split`(       inputstring varchar(1000),       delim char(1)   )       NOT DETERMINISTIC       CONTAINS SQL       SQL SECURITY DEFINER       COMMENT ''   begin       declare strlen int;       declare last_index int;       declare cur_index int;       declare cur_char VARCHAR(200);       declare len int;       set cur_index=1;       set last_index=0;       set strlen=length(inputstring);   drop temporary table if exists splittable;       create TEMPORARY table splittable DEFAULT CHARSET=utf8(           id int AUTO_INCREMENT,           value VARCHAR(20),           PRIMARY KEY (`ID`),           UNIQUE KEY `ID` (`ID`)       ) ;       WHILE(cur_index<=strlen) DO           begin           if substring(inputstring from cur_index for 1)=delim or cur_index=strlen then               set len=cur_index-last_index-1;               if cur_index=strlen then                  set len=len+1;               end if;               insert into splittable(`value`)values(substring(inputstring from (last_index+1) for len));               set last_index=cur_index;           end if;           set cur_index=cur_index+1;       END;    end while;   /*測試*/   call proc_split('a;b;c;d',';');   select * from splittable;     上面只適合於對單個詞做處理,可能我們自己遇到的情況是,將所有的字段(每個字段可能只包含一個關鍵詞,也可能包含多個關鍵詞)處理成一個多關鍵詞處理,附帶一個sql可以實現  Java代碼   select group_concat(name separator ';') as tags from tags where LENGTH(name)>0     參數說明:LENGTH(name)>0 是為空的字段不做處理   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved