Sql 如何从值文本中提取数据

Sql 如何从值文本中提取数据,sql,sql-server,tsql,Sql,Sql Server,Tsql,我继承了一个查询,查询的一部分是删除字符以获得某些字符 下面是字符串“将关键字(组)'ABC-ABC-ABC'添加到'Incoming Fax-4/3/2017 1:57:21 PM-From:[Fax Name or#s]到:[2140000000]” 我的问题是: SUBSTRING(column1,CHARINDEX('to ''',column1)+19,LEN(LTRIM(RTRIM(column1)))-CHARINDEX('''',(column1))-19) as Receive

我继承了一个查询,查询的一部分是删除字符以获得某些字符

下面是字符串
“将关键字(组)'ABC-ABC-ABC'添加到'Incoming Fax-4/3/2017 1:57:21 PM-From:[Fax Name or#s]到:[2140000000]”

我的问题是:

SUBSTRING(column1,CHARINDEX('to ''',column1)+19,LEN(LTRIM(RTRIM(column1)))-CHARINDEX('''',(column1))-19) as Received
最终结果是我只想要日期和时间,即2017年4月3日下午1:57:21


我正在使用SSMS 2014

您可以根据需要更改+4或-4。现在你将有你的欲望输出

SUBSTRING(INSTR(column1,'Fax',1)+4,(INSTR(column1,'Form:',1)-INSTR(column1,'Fax',1)-4)) 

请尝试使用以下代码:

    DECLARE @String NVARCHAR(MAX) ='Added Keyword (Group) ''ABC-ABC-ABC-ABC'' to ''Incoming Fax  - 4/3/2017 1:57:21 PM - From: [Fax Name or #s], To: [2140000000]'
    SELECT SUBSTRING(@String,PATINDEX('%[0-9]%',@String),20)as Received
    --SELECT SUBSTRING(@String,PATINDEX('%[0-9]%',column1),20)as Received

您能提供2字符串及其期望输出吗?我无法帮助uHello,字符串如下(我已删除用户信息)添加关键字(组)“ABC-ABC-ABC-ABC”到“传入传真-2017年4月3日12:15:36下午-从:[某人或#的]到:[214818000]”。。。在这个字符串中,我只想得到日期和时间,其余的可以删除。传真关键字总是存在吗?是的,“传真-”和“-From”总是存在。你可以编辑问题,提供完整的起始字符串和你想要的准确结果。Mysql有正则表达式函数,应该可以很容易地实现这一点。我试过了,但它说substr和position没有被识别为内置函数。抱歉,我仍在从不同的部分学习SQL。我使用的SQL是SSMS 2014,希望它能帮助我使用的SQL类型using@user7681605你现在能试试吗?谢谢。我对它进行了一些处理,并能够使用代码获得我想要的值。再次感谢你!谢谢你的代码。我能够使用您的知识和上面的代码提取我想要的值。两者都不同,但效果很好。再次感谢。