sql >> Databáze >  >> Database Tools >> SSMS

extrahujte text ze sloupce a zkopírujte jej do nového sloupce

Za předpokladu, že bych musel ze sloupce řetězce extrahovat první výskyt hodnot data/času v následujícím formátu DD/MM/YYYY HH:SS (délka =16 znaků), pak bych použil PATINDEX místo CHARINDEX tedy:

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)

Výsledky:

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. Jak se připojit ke vzdálené databázi přes SSH tunel v pgAdmin4 a DBeaver

  2. Nelze importovat/nasadit databázi do SQL Azure:Zadaný cíl služby (Business/Web) je neplatný.

  3. Žádná dialogová okna uživatelského rozhraní v MS Azure / SQL Server Management Studio

  4. Jak nastavit cizí klíč, který je závislý na vztahu dalších dvou tabulek?