Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wyodrębnij znaki na prawo od wartości rozdzielanej w instrukcji SELECT

To pytanie ma odpowiedź specyficzną dla bazy danych.

W przypadku korzystania z serwera SQL:

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

Możesz dodać CASE oświadczenie lub użyj NULLIF() w przypadku, gdy myślnik nie zawsze występuje:

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

Lub:

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

Jeśli używasz MySQL po prostu zmień CHARINDEX() do LOCATE() . Wierzę, że Oracle to INSTR() a pierwsze dwa parametry są przełączane, najpierw jest ciąg, w którym szukasz, a następnie ciąg, którego szukasz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć wszystkie procedury składowane, które wstawiają, aktualizują lub usuwają rekordy?

  2. @@BŁĄD i/lub SPRÓBUJ - CATCH

  3. Tabela transpozycji

  4. Jak testujesz istnienie użytkownika w SQL Server?

  5. Instrukcja PRINT w T-SQL