从SQL中的varchar字段中删除日期

时间:2014-12-07 22:39:54

标签: sql sql-server

我有一个varchar字段,例如'由博客创建16/10/2014#123456更多东西'。

我已删除了这些字符,例如东西(Col,1,patindex('%[0-9]%',Col)-1,'')也取代了#,所以我留下了16/10/2016 123456。

我现在要删除日期。日期可以在123456之前或之后定位。日期可以采用各种格式。

我的最终目标是留下123456。

2 个答案:

答案 0 :(得分:1)

试试这个。它假设该数字以“#”为前缀,后跟一个空格(或最后一个)。:

DECLARE @Str VARCHAR(100)
SET @Str = 'Created by blogs 16/10/2014 #123456 more stuff'

SELECT
  SUBSTRING(
            SUBSTRING(@Str, CHARINDEX('#', @Str) + 1, 999), 
            1, 
            CHARINDEX(' ', 
                      SUBSTRING(@Str + ' ', 
                                CHARINDEX('#', @Str) + 1, 999)))

将@Str替换为您的列名。添加了数字最后的错误修正

答案 1 :(得分:0)

试试这个

DECLARE @YourString VARCHAR(100)
SET @YourString = 'Created by blogs 16/10/2014 #123456 more stuff'

SELECT LEFT(RIGHT(@YourString,PATINDEX('%[0-9]%',@YourString)-1),CHARINDEX(' ',RIGHT(@YourString,PATINDEX('%[0-9]%',@YourString)-1)))