sql >> Databasteknik >  >> RDS >> Sqlserver

Extrahera tecken till höger om ett avgränsat värde i en SELECT-sats

Den här frågan har ett databasspecifikt svar.

Om du använder SQL Server:

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

Du kan lägga till en CASE eller använd NULLIF() om bindestrecket inte alltid finns:

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

Om du använder MySQL, ändra bara CHARINDEX() till LOCATE() . Jag tror att Oracle är INSTR() och de två första parametrarna ändras, först är det strängen du söker i, sedan strängen du söker efter.



  1. mysql_ping hänger med Amazon RDS

  2. MySQL främmande nyckelbegränsning - heltalskolumn

  3. Call lagrad procedur som innehåller insamling av poster med callproc i python

  4. hur kodas smileys i mysql utf-8 mb4-databasen?