❶ 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)", 然后执行,就可以删除了。