Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Extrahieren Sie Zeichen rechts von einem begrenzten Wert in einer SELECT-Anweisung

Diese Frage hat eine datenbankspezifische Antwort.

Bei Verwendung von SQL Server:

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

Sie können einen CASE hinzufügen -Anweisung oder verwenden Sie NULLIF() falls der Bindestrich nicht immer vorhanden ist:

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

Oder:

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

Wenn Sie MySQL verwenden, ändern Sie einfach CHARINDEX() zu LOCATE() . Ich glaube Oracle, es ist INSTR() und die ersten beiden Parameter werden vertauscht, zuerst ist es die Zeichenfolge, in der Sie suchen, dann die Zeichenfolge, nach der Sie suchen.