sql >> Databáze >  >> RDS >> Sqlserver

Extrahujte znaky napravo od hodnoty s oddělovači v příkazu SELECT

Tato otázka má odpověď specifickou pro databázi.

Pokud používáte SQL Server:

SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable

Můžete přidat CASE nebo použijte NULLIF() v případě, že spojovník není vždy přítomen:

SELECT column1
     , CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) 
           END as extracted
     , column3 
FROM myTable

Nebo:

SELECT column1
     , RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
     , column3 
FROM myTable

Pokud používáte MySQL, stačí změnit CHARINDEX() na LOCATE() . Věřím, že Oracle je INSTR() a první dva parametry se přepnou, nejprve je to řetězec, ve kterém hledáte, potom řetězec, který hledáte.



  1. mysqli_stmt::bind_param():Počet prvků v řetězci definice typu neodpovídá počtu proměnných vazby

  2. Jak mohu vybrat pouze poslední položku v tabulce?

  3. Připojení k MySQL databázím

  4. Existuje zkratka pro vazbu s názvem parametry PDO pro vložky MySQL?