sql >> データベース >  >> RDS >> Sqlserver

SELECTステートメントで区切られた値の右側の文字を抽出します

    この質問にはデータベース固有の回答があります。

    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つのパラメータが入れ替わります。最初は検索している文字列で、次に検索している文字列です。



    1. オペレーター

    2. Railsはランダムなレコードを選択します

    3. SQL構文エラー1064

    4. SQL Server(T-SQL)でのTRANSLATE()関数のしくみ