SSMS
 sql >> Database >  >> Database Tools >> SSMS

estrarre il testo dalla colonna e copiarlo in una nuova colonna

Supponendo che dovrei estrarre da una colonna di stringa la prima occorrenza di valori di data/ora con il seguente formato DD/MM/YYYY HH:SS (lunghezza =16 caratteri), quindi userei PATINDEX invece di CHARINDEX quindi:

SELECT  *, 
    SUBSTRING(
        x.StringColumn, 
        NULLIF(PATINDEX('%[0-1][0-9]/[0-3][0-9]/[0-9][0-9][0-9][0-9][ ][0-9][0-9]:[0-9][0-9]%', x.StringColumn), 0), 
        16) AS DateTimeExtracted
FROM    (VALUES 
    ('Bogdanel 01/02/2017 03:04 hei ho'),
    ('Georgel 05/06/2017 07:08 danga langa'),
    ('Suna''n asfintit 09/11/2018 11:22 hei talanga'),
    ('Danga langa. Pai da.'),
    ('   '),
    (NULL)
) x(StringColumn)

Risultati:

StringColumn                                 DateTimeExtracted
-------------------------------------------- -----------------
Bogdanel 01/02/2017 03:04 hei ho             01/02/2017 03:04
Georgel 05/06/2017 07:08 danga langa         05/06/2017 07:08
Suna'n asfintit 09/11/2018 11:22 hei talanga 09/11/2018 11:22
Danga langa. Pai da.                         NULL
                                             NULL
NULL                                         NULL