Mysql 如何删除数据集中所有行的第一部分

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

我使用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) 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!请花点时间通过以下方式熟悉本网站:拍摄、阅读、浏览,最后了解如何创建一个网站。此外,你的问题缺乏你的尝试。希望这有帮助。