この質問には、データベース固有の回答があります。
SQL Server を使用している場合:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
ハイフンが常に存在しない場合は、CASE
ステートメントを追加するか、使用できます。NULLIF()
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
または:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
MySQL を使用している場合CHARINDEX()
は、LOCATE()
. Oracle だと思いますINSTR()
。最初の 2 つのパラメータが入れ替わっています。最初は検索対象の文字列で、次に検索対象の文字列です。