• 締切済み

SQLServerで文字列の末尾からある位置で取出

SQLServer2012で selectで文字列の末尾から(右から)ある文字の位置までを取り出したいのですが どのようなSQLにすればよいのでしょうか。 やりたいことは、 例えば、文字列「abc 123 xyz」があるとします。 末尾から(右から)見て、最初に見つかった半角スペースから後ろ「xyzを取り出し たいです。 RIGHT を使えば取り出すことはできるのですが、取り出したい文字列の長さが同じ でないので使うことができません。 お願いします。

みんなの回答

  • innoya
  • ベストアンサー率71% (10/14)
回答No.4

こんにちは。 あぁ。空白が入っていましたね。 下記のように-1をしてください。 Ltrimを使うよりいいです。 DECLARE @Str VARCHAR(100) SET @Str = 'abc 123 xyz' SELECT RIGHT(@Str,CHARINDEX(' ',REVERSE(@Str))-1) SET @Str = 'abcxcvzx 123456 xyzsdf' SELECT RIGHT(@Str,CHARINDEX(' ',REVERSE(@Str))-1) また下記の質問の件ですが、 >> CHARINDEXで検索文字列を「123」とすると結果が得られ >> ないのですが、REVERSE関数により反転してしまっている >> からですか。 そうですね。REVERSE関数により検索ができなかったからです。 どんなデータでどんなデータを得られたいかをもっと詳しく教えて頂ければ、 答えするのに助かりますが。。。 よろしくお願いします。

abc999xyz
質問者

お礼

ありがとうございます。 返事が遅くなりましたが、 データとしては 部署名△チーム名△UP△社員番号 部署名△チーム名△DW△社員番号 部署名△チーム名△協力者社員番号 部署名△チーム名△社員番号 : : 部署名△チーム名△UP△社員番号 部署名△チーム名△DW△社員番号 ※△=半角スペース 日本語は、実際には、値が入っています。 の様なデータから 獲たいデータは、 UP△社員番号 DW△社員番号 協力者社員番号 社員番号 を取り出したいのです

全文を見る
すると、全ての回答が全文表示されます。
  • innoya
  • ベストアンサー率71% (10/14)
回答No.3

こんにちは。 REVERSE関数を使えばできます。 下記のSQLを実行してみてください。 DECLARE @Str VARCHAR(100) SET @Str = 'abc 123 xyz' SELECT RIGHT(@Str,CHARINDEX(' ',REVERSE(@Str))) SET @Str = 'abcxcvzx 123456 xyzsdf' SELECT RIGHT(@Str,CHARINDEX(' ',REVERSE(@Str))) よろしくお願いします。

abc999xyz
質問者

お礼

ありがとうございます。 REVERSE関数があるとは知りませんでした。 取り出しはできたのですが、半角スペースが残るのですね。 LTRIM で消せました。 CHARINDEXで検索文字列を「123」とすると結果が得られ ないのですが、REVERSE関数により反転してしまっている からですか。

全文を見る
すると、全ての回答が全文表示されます。
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

Strrev関数で、最初のスペースまで拾ってまたstrrev

全文を見る
すると、全ての回答が全文表示されます。
  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

DECLARE @WORD1 VAERCHAR(100) SET @WORD = 'abc 123 xyz' SELECT RIGHT(@WORD,LEN(@WORD) - CHARINDEX(‘ ’,@WORD))

abc999xyz
質問者

お礼

ありがとうございます。 取り出しはできたのですが、 xyz ではなく、 123 xyz でした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLServerで文字列の末尾からある位置で取出

    SQLServerで文字列の末尾からある位置で取出 SQLServer2012で selectで文字列の末尾から(右から)ある文字の位置までを取り出したいのですが どのようなSQLにすればよいのでしょうか。 やりたいことは、 データとしては 部署名△チーム名△UP△0000001 部署名△チーム名△DW△0000002 部署名△チーム名△w00001 部署名△チーム名△000003 : : 部署名△チーム名△UP△100001 部署名△チーム名△DW△100002 ※△=半角スペース の様なデータから獲たいデータは、 UP△000001 DW△000002 w00001 000003 ; UP△100001 DW△100002 を取り出したいのです お願いします。

  • エクセル 文字列の中から数字を抽出する方法

    エクセル 文字列の中から数字を抽出する方法 以前 QNo.5823420 で質問させて頂いたんですが 再度質問させてください。 "オーダー番号"+"半角スペース"+"部品型番"+"半角スペース"+"個数"+"半角スペース"+"部品名" というような文字列の中から個数の数のみを抽出する方法を教えてください。 "文字列"+"半角スペース"+"文字列"+"半角スペース"+・・・と文字列の繋がる数は決まってませんので 個数は何番目のスペースの後にくるかは不定です。 数量の半角"ケ"とその前の半角スペースまでの間の数字を抽出したいです。 例1)文字列 :ABC110 XXYYZZ5566 2ケ ****   抽出文字:2 例2)文字列 :ABC XYZ 5566 DDEE11 3ケ FFGG   抽出文字:3 よろしくお願いします。

  • 半角スペースを含む文字列を変数にセット可能?

    以下のような、画像を読み込む関数を定義します。 function changePhoto(OBJname, image) { document.images[OBJname].src=image; } これを onClick=changePhoto('Photo316','abc xyz.jpg') のように、引数に半角スペースを含む文字列で呼び出すと、エラーになってしまいます。 abc_xyz.jpgであれば問題ありません。 半角スペースは渡せないのでしょうか? よろしくお願いします。

  • splitを使ってスペース位置で文字列を区切りたい

    splitを使ってスペース位置で文字列を区切りたいのですが、 String[] word = str.split(" ",0);  //半角空白 のように書くと、全角スペースは区切りとしてみなされず、 String[] word = str.split(" ",0);  //全角空白 のように書くと、半角スペースは区切りとしてみなしてくれません。 全角スペースでも半角スペースでも、スペース位置で文字列を区切りたいのですが、どのように書けばよいのでしょうか?

    • ベストアンサー
    • Java
  • 末尾の全角スペースの削除

    SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。

  • 特定の文字列を削除

    こんにちは perlで特定の文字列からその後ろをすべて 削除したいのですが、うまくできなくて質問します。 Ex)123.12abc   ⇒123.12 012.123abc   ⇒012.123 123.1234|| ⇒123.1234 上記のようなデータの少数点までの数字の後ろにabc、||、半角、全角スペースなど文字列があります. 少数点までの数字の後ろの文字列すべてを削除したいですが、 特定の文字列からその後ろにある文字列全てを指定する方法(正規表現)はありませんでしょうか? どうかご存知の方、教えてください!! よろしくお願いいたします。

  • [Linux] ubuntuでコマンド中の文字列を置換して実行する。

    bashを利用しております。 #mv /abc /abc0 && mv /abc2 /abc 上記コマンドを実行した後、abcという文字列をxyzに置換 (内容的には#mv /xyz /xyz0 && mv /xyz2 /xyzと同一)し、 コマンドを手動で実行する方法を探しています。 ヒストリ置換を用いて 「直前に実行したコマンドのabcという文字列をxyzという文字列に置換して実行する」 にはどのようにすればいいのでしょうか? また、もっといい方法がございましたら、 教えていただけますでしょうか? よろしくお願いいたします。

  • EXCELで、文字列を任意の文字数毎に分割するには

    ≪やりたい内容と条件≫ ◆EXCELで、文字列を任意の文字数毎に分割したいです。 ◆文字列は、全角・半角・記号を含みます。 ◆1つのセルが半角80桁という制限があり、その上限を超えると、右の次のセルに流し込まれるようにしたいです。(A1は元の文字列1500桁くらい、以降B1,C1,D1,E1・・・という具合に流し込み) ≪試した内容≫ MIDB関数を見つけ挑戦しましたが、1つ目のセルはうまくいきますが、その後が出来ません。例えば、文字列が「・・・・・・abcあいうえお」となっていた場合、B1は「・・・・・・abcあいう」、C1は「 お」(「お」の前は、半角スペース)となります。 何かよい方法はないでしょうか。 一度に出来ないようであれば、A1-B1で残りの文字列が表示できれば、それ以降はまた関数を入れて一つ一つやっていきたいと思っています。 よろしくお願いいたします。

  • MS SQLServer のSQLで文字列の前にN:

    MS SQLServer のSQLで文字列の前にN: をつけることをよく見かけますが、 「N:」とはいったいどんな意味なのでしょうか? 教えて下さい。

  • 先頭 中央 末尾 スぺースチェック

    ある文字列の先頭と末尾の全角スペースを削除し、文字列の途中での(全角または半角)スペースは1つだけ残る(複数入った場合)のチェックはどうしたら要いいでしょうか? ご教授願います。