mysql存儲過程字元串分割
❶ mysql查詢怎樣智能分割字元串
SELECT * , substring(content,charindex(N'厲害了',content),3) as [厲害了] FROM news WHERE content LIKE %厲害了%我的哥%』
SELECT * , substring(content,charindex('我的哥',content),3) as [我的哥] FROM news WHERE content LIKE %厲害了%我的哥%』
❷ mysql 分割字元串
(field*1)>=1 AND (field*1)<=10
❸ mysql存的欄位取出來後怎麼分割輸出
str = '重慶,四川,北京';
SELECT substring_index('重慶,四川,北京','.', 1); #重慶
SELECT substring_index('重慶,四川,北京','.', 2); #四川
SELECT substring_index('重慶,四川,北京','.', 3); #北京
❹ sql語句進行字元串分割
你是什麼資料庫?mysql
按照第一個*號前面的字元串分組
然後匯總
select
a,sum(b)
from
pppppp.tablename1
group
by
substring_index(a,'*',1)
limit
0,
50
按照第二個*前面的字元串分組
然後匯總
select
a,sum(b)
from
pppppp.tablename1
group
by
substring_index(a,'*',2)
limit
0,
50
❺ Mysql中存儲過程或函數 如何將逗號分隔的字元串倒序輸出 如 :4531,8651,3256 變為: 3256,8651,4531
DELIMITER//
DROPFUNCTIONReverseWordBy//
CREATEFUNCTIONReverseWordBy(pOldValTINYTEXT,pDivCharCHAR(1))
RETURNSTINYTEXT
BEGIN
/**預期結果.**/
DECLAREvResultTINYTEXT;
--當前逗號的位置.
DECLAREvIndexINT;
--前一個逗號的位置.
DECLAREvPrevIndexINT;
--查詢第一個逗號的位置.
SETvIndex=INSTR(pOldVal,pDivChar);
IFvIndex=0THEN
--參數中沒有逗號,直接返回.
RETURNpOldVal;
ENDIF;
--初始化情況,前一個逗號不存在.
SETvPrevIndex=0;
--初始化結果為空白字元.
SETvResult='';
--循環處理。
WHILEvIndex>0DO
--設置結果=本次查詢的結果,以前的查詢結果.
SETvResult=CONCAT(SUBSTRING(pOldVal,vPrevIndex+1,(vIndex-vPrevIndex-1)),pDivChar,vResult);
--前一個逗號的位置=當前逗號的位置
SETvPrevIndex=vIndex;
--查詢下一個逗號的位置.
SETvIndex=LOCATE(pDivChar,pOldVal,vPrevIndex+1);
ENDWHILE;
--最後追加最後一組數據.
SETvResult=CONCAT(SUBSTRING(pOldVal,vPrevIndex+1),pDivChar,vResult);
--清除掉最後一個逗號.
SETvResult=LEFT(vResult,LENGTH(vResult)-1);
--返回結果.
RETURNvResult;
END;
//
DELIMITER;
SELECTReverseWordBy('4531,8651,3256',',')A;
SELECTReverseWordBy('1,12,123,1234,12345,123456',',')B;
輸出結果:
mysql>SELECTReverseWordBy('4531,8651,3256',',')A;
+----------------+
|A|
+----------------+
|3256,8651,4531|
+----------------+
1rowinset(0.00sec)
mysql>
mysql>SELECTReverseWordBy('1,12,123,1234,12345,123456',',')B;
+----------------------------+
|B|
+----------------------------+
|123456,12345,1234,123,12,1|
+----------------------------+
1rowinset(0.00sec)
❻ mysql如何進行以=分割的字元串的拆分
拆分以逗號隔開的字元串,這是高級語言來處理的吧,資料庫主要是存儲數據的,比如php就可以這樣實現:
$string
=
'1,2,3,4,5';
$array
=
explode(',',$string);
之後就得出一個數組,$array(1,2,3,4,5);
❼ 在mysql中有沒有分割字元串的函數
mysql 中有截取字元串的 但是不建議使用 mysql 進行截取操作效率很低 建議使用程序進行截取 如果比較 執著 下面的sql 可以截取字元 select left(content mysql 中有截取字元串的 但是不建議使用 mysql 進行截取操作效率很低 建議使用程序進行截取 如果比較 執著 下面的sql 可以截取字元 select left(content
❽ mysql存儲過程中 如何拆分字元串
MySQL分割字元串應該如何實現呢?下面就為您介紹MySQL分割字元串的實現方法步驟,希望可以讓您對MySQL分割字元串有更多的了解。
例如:update `edw_video` set company = substring(keyword,1,length(SUBSTRING_INDEX(keyword,",",1)))
名稱:SPLIT_SUB_STR1(取得split字元串的第一段)
參數:str 要split的目標字元串 (輸入格式為『11,2,3,4,5,6』; 輸出為『2,3,4,5,6』)
delimiter 分隔符 (『,』)
split1 輸出第一項(『11』)
存儲過程
CREATE DEFINER=`root`@`%` PROCEDURE `SPLIT_SUB_STR0`(inout str VARCHAR(1000) ,delimiter VARCHAR(1), out split1 VARCHAR(20))
BEGIN
# 名稱 SPLIT_SUB_STR1 取得分割字元串的第一段字元
# 參數inout str VARCHAR(1000) ,delimiter VARCHAR(1), out split0 VARCHAR(20)
# 輸入完整字元串,輸出去掉取得第一項後的字元串; 分隔符; 輸出split的第一個項目
#分割出第一段字元串不包括分隔符的長度
DECLARE SUB_STR_LENGTH INT;
# SUBSTRING_INDEX函數取得目標字元串左側第n個分割符左側的部分,n為負時返回右側第n個的右部分
SET SUB_STR_LENGTH = length(SUBSTRING_INDEX(str,delimiter,1));
#截取第一段字元串,不包括分隔符,放入輸出參數里
SET split0 = substring(str, 1, SUB_STR_LENGTH);
# 取得去掉第一個字元串和分隔符的字元串,進行下次循環取得下個字元串
SET str = substring(str, SUB_STR_LENGTH + 2 );
#測試一下輸出是否正確
#SELECT SUB_STR_LENGTH, SUB_STR_SPLIT0, STR;
END
調用實例
CREATE DEFINER=`root`@`%` PROCEDURE `test`()
BEGIN
#目標字元串
set @a = 』1,2,3,4,5,6,12『;
# 分隔符
set @c = ',';
# 存儲風格後的字元串
set @b = '';
REPEAT
# 調用上面的存儲過程
CALL SPLIT_SUB_STR0(@a, ',', @c);
#將取得的字元串拼接,測試用
set @b = concat(@b, @c);
#當目標字元串為空時,停止循環
UNTIL @a = ''
END REPEAT;
# 查看結果
select @a, @c, @b;
END;
❾ mysql存儲過程一個參數有多個逗號分割
這個應該可以使用字元串拼接,你是不是這樣寫存儲過程:
create procere p_proc(var_in int)
begin
delete from [tableName] where [colName] in (var_in);
end
然後又這樣調用:
call p_proc(1, 2, 3);
這樣肯定不行,那麼你可以這樣:
create procere p_proc(var_in varchar(5000))
begin
set @sql = concat("delete from [tableName] where [colName] in (", var_in, ")");
prepare stmt_exe_sql from @sql;
execute stmt_exe_sql;
deallocate prepare stmt_exe_sql;
end
這樣就相當於把(1, 2, 3)拼接成語句"delete from [tableName] where [colName] in (1, 2, 3)", 然後執行,就可以刪除了。