Mysql 如何删除数据集中所有行的第一部分
我使用Excel数据透视表将每日数据转换为每周数据。我的“日期”栏过去看起来像:2018年1月1日,但现在(每周)看起来像2018年1月1日-2018年1月7日。我想从我所有的行(200行)中删除第一部分,这样每行只显示一个日期,那就是后面的日期:2018年1月7日。我知道有人在找我;但我希望每一行代表不同的数字 这是我的猜测Mysql 如何删除数据集中所有行的第一部分,mysql,sql,database,Mysql,Sql,Database,我使用Excel数据透视表将每日数据转换为每周数据。我的“日期”栏过去看起来像:2018年1月1日,但现在(每周)看起来像2018年1月1日-2018年1月7日。我想从我所有的行(200行)中删除第一部分,这样每行只显示一个日期,那就是后面的日期:2018年1月7日。我知道有人在找我;但我希望每一行代表不同的数字 这是我的猜测 CREATE TABLE my_table2 ( my_date varchar(50) ); INSERT INTO my_table2 (my_date) VAL
CREATE TABLE my_table2 (
my_date varchar(50)
);
INSERT INTO my_table2 (my_date) VALUES ('1/1/2018 - 1/7/2018');
INSERT INTO my_table2 (my_date) VALUES ('12/10/2018 - 12/16/2018');
SET @row_number = 0;
SELECT (@row_number:=@row_number + 1) as date_number
,t.my_date
,SUBSTRING(t.my_date, LOCATE(' - ',t.my_date,1) + 3, LENGTH(t.my_date) - LOCATE(' - ',t.my_date,1) + 3) as my_alt_date
FROM my_table2 t;
这是输出
+----+-------------+-------------------------+-------------+
| | date_number | my_date | my_alt_date |
+----+-------------+-------------------------+-------------+
| 1 | 1 | 1/1/2018 - 1/7/2018 | 1/7/2018 |
| 2 | 2 | 12/10/2018 - 12/16/2018 | 12/16/2018 |
+----+-------------+-------------------------+-------------+
我使用创建了ASCII表。希望这能帮助你开始
我想从我所有的行(200行)中删除第一部分,这样每行只显示一个日期,这是较晚的一天:2018年1月7日
你可以用a来做这个
这:
SELECT REGEXP_REPLACE('1/1/2018 - 1/7/2018', '.+ - ', '');
收益率:
1/7/2018
说明:正则表达式'.+-'
匹配从字符串开头到最后一个子字符串的所有内容REGEXP_REPLACE
将用第三个参数(此处为空字符串)替换匹配部分
您可以将其包装在UPDATE
查询中,如:
UPDATE my_table SET my_date = REGEXP_REPLACE(my_date, '.* - ', '');
示例数据、所需结果和适当的数据库标记都会有所帮助。这是excel还是sql?如果是sql,那么您使用的是什么数据库?您好,欢迎使用SO!请花点时间通过以下方式熟悉本网站:拍摄、阅读、浏览,最后了解如何创建一个网站。此外,你的问题缺乏你的尝试。希望这有帮助。