sql - 从 SQL 文本中删除日期

标签 sql sql-server date

我有一个如下所示的数据集,我想从中删除日期组件。一项挑战是日期可以采用不同的格式,如下所示。

现有输出

Event A 05-25-2015
Event B 25-05-2015
Event C April 2015
Event D 2016

所需输出

Event A
Event B
Event C
Event D 

最佳答案

一些可以帮助您入门的东西。根据您可能面临的格式数量,您可能希望将它们作为模式全部放入表中,联接到该表并使用 LEN计算 STUFF 的值命令。

DECLARE @test TABLE (my_string VARCHAR(50) NOT NULL)

INSERT INTO @test (my_string)
VALUES
    ('Event A 05-25-2015'),
    ('Event B 25-05-2015'),
    ('Event C April 2015'),
    ('Event D 2016')

SELECT
    CASE
        WHEN PATINDEX('%[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]%', my_string) > 0
            THEN STUFF(my_string, PATINDEX('%[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]%', my_string), 10, '')
        WHEN PATINDEX('%April [0-9][0-9][0-9][0-9]%', my_string) > 0
            THEN STUFF(my_string, PATINDEX('%April [0-9][0-9][0-9][0-9]%', my_string), 10, '')
        WHEN PATINDEX('%[0-9][0-9][0-9][0-9]%', my_string) > 0
            THEN STUFF(my_string, PATINDEX('%[0-9][0-9][0-9][0-9]%', my_string), 4, '')
        ELSE my_string
    END AS my_string
FROM
    @test

我的猜测是,这非常容易出错,并且如果某人有名为“事件 6421”的事件,则可能会发现误报。

这也仅处理示例数据中的格式。我认为您可能需要处理更多,但这应该指向正确的方向。

关于sql - 从 SQL 文本中删除日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35734169/

相关文章:

java - 更新 "ERROR: column "的 sql 使用了“关系 "account"不存在”,即使它确实存在

java - 我如何模拟 c3p0 ComboPooledDataSource

mysql - Mysql中简单查询速度慢

sql-server - SQL Server 条件序列号

sql-server - 如何在 SSRS 中的表格中正确获取表格?

javascript - 为什么 javascript date.setDate() 改变其他日期变量的值

java - 检查日期解析是否正确

使用 'Between' 计算坐标的 MySQL 逻辑问题

sql - 我应该在客户端还是在 SQL Server 中生成大量 SQL 数据?

oracle - 如何在 PL/SQL 中将天数(第 331 天)转换为 yyyymmdd?