回到 sql:
SELECT
a.id,a.num,SUBSTRING_INDEX(SUBSTRING_INDEX(a.`name`, ',', b.help_topic_id), ',',-1 )
test a
JOIN tmp_help_topic b ON b.help_topic_id <= (LENGTH( a.`name`) - LENGTH(REPLACE(a.`name`, ',', '')) + 1 );
SUBSTRING_INDEX(SUBSTRING_INDEX(a.
name, ',', b.help_topic_id), ',',-1 )
就是获取 tmp_help_topic 表的 help_topic_id 字段的值作为 name
字段的第几个子串- 使用了 join 就会把字段 name 分为
(LENGTH( a.
name) - LENGTH(REPLACE(a.
name, ',', '')) + 1 )
行,并且每行的字段刚好是 name
字段的第 help_topic_id 个子串
这两天解决了一个比较麻烦的问题,在此记录一下。
问题,select * from table where table.key in (’${权限值}’) 这个sql传入的参数是一个字符串根据情况需要拆分。
因为mysql无法直接一行拆多行,所以百度一下,下面是可行的解决方案。
SELECT
substring_index(substring_index( a.rn,',',b.help_topic_id + 1 ),',' ,- 1) AS rn
(select '1,2,
按照指定字符进行合并或拆分是经常碰到的场景,MySQL在合并的写法上比较简单,但是按指定字符拆分相对比较麻烦一点(也就是要多写一些字符)。本文将举例演示如何进行按照指定字符合并及拆分。01 合并MySQL数据库中按照指定字符合并可以直接用group_concat来实现。创建测试表mysql> create table tb_group(id int auto_increme...
将该条数据按照TXYMZL拆分为两条数据,我上网也查了一下,看到普遍是有两种做法:
第一种:写存储过程来解决这个问题,但是用mysql一般不推荐使用存储过程,因为以后数据库版本升级或者数据迁移比较困难。
第二种:使用mysql自带的一张叫做help_topic的自增序列表,可以解决这个问题。(用该方法的时候,...
注:要是有哪个函数看不懂依次的查,慢慢就看懂了,不要先进行复杂的操纵,自己建个简单的测试一下,成功之后你自己就有自己的感觉了,要不然直接复制粘贴一脸懵逼。
上面的图片是目标拆分的代码,根据‘,’来进行拆分得到多行数据。效果如下
话不多说,上代码:
SELECT
t.targetColumn,
substring_index(
substring_index(t.sourceColumn,'/',b.help_topic_id + 1),'/' ,- 1
syjxdat
EXTRACT(YEAR FROM create_time) AS YEAR,
EXTRACT(MONTH FROM create_time) AS MONTH,
EXTRACT(DAY FROM create_time) AS DAY
train_comment
ORDER BY
create_time DESC;
统计当天sql语句为:* user where date(log_time) = curdate();curdate()默示当天日期统计前一天若是默示前一天的数据,则不克不及应用curdate()-1,因为当日期为月初时,curdate()-1 日期就不是上一个月的月末日期。例如:今天是6月1日,理论上curdate()-1为5月31日,然则curdate()-1获得不是5月31日,而是6月0日...
select substring_index(substring_index('a,b,c,d',',',help_topic_id+1),',',-1) as test_val
from mysql.help_topic
where help_topic_id<(length('a,b,c,d')-length(replace('a,b,c,d',',',''))+1);
select
dv.order_id
,dv.deliver_time
,substring_i