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

extrahera text från kolumn och kopiera den till en ny kolumn

Förutsatt att jag måste extrahera från en strängkolumn första förekomsten av ett datum/tid-värden med följande format DD/MM/YYYY HH:SS (längd =16 tecken) då skulle jag använda PATINDEX istället för CHARINDEX alltså:

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)

Resultat:

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


  1. varför är det inte snabbt att skapa vy från en vänster sammanfogad vy?

  2. SQL Server 2012-fel:objektreferens inte inställd på en instans av ett objekt

  3. Redigera flera rader efter deras ordningsindex

  4. SSMS:Spara automatiskt flera resultatuppsättningar från samma SQL-skript till separata flikar i Excel?