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

时间:2018-12-23 16:15:56

标签: mysql sql database

我有使用Excel数据透视表转换成每周的每日数据。我的“日期”列过去看起来像:1/1/2018,但是现在(每周)看起来像是1/1/2018-1/7/2018。我想从我的所有行(200行)中删除第一部分,以便每行仅显示1个日期,而那是第二天:1/7/2018。我知道这里有replace();但我希望每一行代表不同的数字。

2 个答案:

答案 0 :(得分:0)

这是我的疯狂猜测...

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  |
+----+-------------+-------------------------+-------------+

我使用this tool创建了ASCII表。希望这可以帮助您入门。

答案 1 :(得分:0)

  

我想从我的所有行(200行)中删除第一部分,以便每行仅显示1个日期,那是第二天:1/7/2018

您可以为此使用mysql regular expression

此:

POST

收益:

idhttp.Post(URL, jsonRequest, ms);  

说明:正则表达式$soapOption = array( 'location' => 'https://www.elevy-ticf-train.org.hk:8443/ELevyService.svc', 'trace' => true, 'exceptions' => false, 'soap_version' => 'SOAP_1_2', 'encoding' => 'utf-8' ); $client = new SoapClient('test.wsdl', $soapOption); $client->LevyEFrank($data); $response = $client->__getLastResponse(); $dom = new DomDocument(); @$dom->loadHtml($response); $xmlScrope = $dom->getElementsByTagName('levyefrankresult'); $xmlRespone = $xmlScrope->item(0)->getElementsByTagName('*'); $stamp = array(); foreach ($xmlRespone as $element) { $stamp[$element->tagName] = $element->nodeValue; } var_dump($stamp); 匹配从字符串开头到最后一个SELECT REGEXP_REPLACE('1/1/2018 - 1/7/2018', '.+ - ', ''); 子字符串的所有内容; 1/7/2018 将匹配部分替换为第三个参数(此处为空字符串)。

您可以将其包装在'.+ - '查询中,例如:

-