在SELECT语句中提取分隔值右侧的字符

use*_*015 8 sql sql-server select delimiter

我需要提取连字符右侧的所有字符作为select语句的一部分.选择中将有其他列.在下面的查询中,从第二列中选择了右边的三个字符.如何在分隔符右侧提取无限数量的字符 - 在我的情况下是连字符?我可以使用正确的功能吗?我需要使用其他功能吗?

Select column1, right(column2,3) as extracted, column3
From myTable
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL Server 2008.

Har*_* CO 21

This question has a database specific answer.

If using SQL Server:

SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable
Run Code Online (Sandbox Code Playgroud)

You can add a CASE statement or use NULLIF() in case the hyphen isn't always present:

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

Or:

SELECT column1
     , RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
     , column3 
FROM myTable
Run Code Online (Sandbox Code Playgroud)

If using MySQL just change CHARINDEX() to LOCATE(). I believe Oracle it's INSTR() and the first two parameters are switched, first it's the string you're searching in, then the string you're searching for.