sql >> Database teknologi >  >> RDS >> Sqlserver

Udtræk tegn til højre for en afgrænset værdi i en SELECT-sætning

Dette spørgsmål har et databasespecifikt svar.

Hvis du bruger SQL Server:

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

Du kan tilføje en CASE sætning eller brug NULLIF() hvis bindestregen ikke altid er til stede:

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

Eller:

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

Hvis du bruger MySQL, skal du bare ændre CHARINDEX() til LOCATE() . Jeg tror, ​​at Oracle er INSTR() og de første to parametre skiftes, først er det strengen du søger i, derefter strengen du søger efter.



  1. Hent XML fra fem forskellige Oracle-tabeller

  2. Hvordan relaterer FRA-siden af ​​en OPDATERING til tabellen, der er målrettet for OPDATERING?

  3. T-SQL:Hvordan vælger man værdier i værdilisten, der IKKE er i tabellen?

  4. Formater SQL i SQL Server Management Studio