从MySQL中的字符串中提取日期
我有如下格式的字符串数据列:从MySQL中的字符串中提取日期,mysql,string,substring,Mysql,String,Substring,我有如下格式的字符串数据列: Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11 Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2 我需要从每个字段中提取日期值,常见的格式是从右边看第一个句号,直到下一个句号。日期总是介于两者之间 日期左边的文本中偶尔会出现句号,所以我们不能相信这一点
Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11
Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2
我需要从每个字段中提取日期值,常见的格式是从右边看第一个句号,直到下一个句号。日期总是介于两者之间
日期左边的文本中偶尔会出现句号,所以我们不能相信这一点
我怎样才能得到那个特殊的子字符串?SQL专家,需要你的建议
谢谢。尝试使用
子字符串\u索引
Select Substring_Index(Substring_Index( txt, ".", -2), ".", 1)
From Tablename
尝试使用
子字符串\u索引
Select Substring_Index(Substring_Index( txt, ".", -2), ".", 1)
From Tablename
您可以使用,我已经安装了UDF函数,我得到以下信息:
1-创建和插入样本数据:
create table your_table (
txt_col text
);
insert into your_table values
('Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11'),
('Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2');
2-使用日期模式测试PREG_CAPTURE
功能:
mysql> SELECT PREG_CAPTURE(
'/([0-9]+\\/[0-9]+\\/[0-9]+)\\s[0-9]+:[0-9]+\\s[a-z]+/i' ,
txt_col, 0 ) as date_captured,
txt_col from your_table;
+--------------------+--------------------------------------------------------------------------------------------+
| date_captured | txt_col |
+--------------------+--------------------------------------------------------------------------------------------+
| 09/19/2014 7:30 PM | Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11 |
| 08/31/2014 5:10 PM | Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2 |
+--------------------+--------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
date\u captured
列是提取的文本。您可以使用,我已经安装了UDF函数,我得到以下信息:
1-创建和插入样本数据:
create table your_table (
txt_col text
);
insert into your_table values
('Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11'),
('Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2');
2-使用日期模式测试PREG_CAPTURE
功能:
mysql> SELECT PREG_CAPTURE(
'/([0-9]+\\/[0-9]+\\/[0-9]+)\\s[0-9]+:[0-9]+\\s[a-z]+/i' ,
txt_col, 0 ) as date_captured,
txt_col from your_table;
+--------------------+--------------------------------------------------------------------------------------------+
| date_captured | txt_col |
+--------------------+--------------------------------------------------------------------------------------------+
| 09/19/2014 7:30 PM | Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11 |
| 08/31/2014 5:10 PM | Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2 |
+--------------------+--------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
date\u captured
列是提取的文本。不要在mysql中这样做。mysql正则表达式只能进行匹配。他们做不到捕捉。您被困在基本的字符串操作中,即使是在sql中,这些操作也会非常痛苦。使用正则表达式只提取其中包含日期的记录,然后使用客户端代码进行实际提取。您是否尝试过SUBSTR(读取SUBSTRING)函数?你尝试过什么?下面的Cheruvian已经使用子字符串索引得到了完美的解决方案。不要在mysql中这样做。mysql正则表达式只能进行匹配。他们做不到捕捉。您被困在基本的字符串操作中,即使是在sql中,这些操作也会非常痛苦。使用正则表达式只提取其中包含日期的记录,然后使用客户端代码进行实际提取。您是否尝试过SUBSTR(读取SUBSTRING)函数?你尝试过什么?下面的Cheruvian使用子串索引得到了完美的解决方案。