我有每天的数据,我变成每周使用excel透视表。我的“日期”栏过去看起来像:2018年1月1日,但现在(周刊)看起来像2018年1月1日-2018年1月7日。我想从我所有的行(200行)中删除第一部分,这样每行只显示一个日期,那就是稍后的一天:2018年1月7日。我知道有替换();但我希望每一行代表不同的数字。
ej83mcc01#
这是我的猜测。。。
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表。希望这能帮你开始。
toe950272#
我想从我所有的行(200行)中删除第一部分,这样每行只显示一个日期,那就是后面的一天:2018年1月7日您可以使用mysql正则表达式来实现这一点。这是:
SELECT REGEXP_REPLACE('1/1/2018 - 1/7/2018', '.+ - ', '');
产量:
1/7/2018
说明:正则表达式 '.+ - ' 匹配从字符串开头到最后一个字符串的所有内容 - 子串; REGEXP_REPLACE 将用第三个参数(这里是一个空字符串)替换匹配部分。你可以把它包起来 UPDATE 查询,如:
'.+ - '
-
REGEXP_REPLACE
UPDATE
UPDATE my_table SET my_date = REGEXP_REPLACE(my_date, '.* - ', '');
2条答案
按热度按时间ej83mcc01#
这是我的猜测。。。
这是输出。。。
我用这个工具创建了ascii表。希望这能帮你开始。
toe950272#
我想从我所有的行(200行)中删除第一部分,这样每行只显示一个日期,那就是后面的一天:2018年1月7日
您可以使用mysql正则表达式来实现这一点。
这是:
产量:
说明:正则表达式
'.+ - '
匹配从字符串开头到最后一个字符串的所有内容-
子串;REGEXP_REPLACE
将用第三个参数(这里是一个空字符串)替换匹配部分。你可以把它包起来
UPDATE
查询,如: