こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

SQLServer2012で
selectで文字列の末尾から(右から)ある文字の位置までを取り出したいのですが
どのようなSQLにすればよいのでしょうか。

やりたいことは、
例えば、文字列「abc 123 xyz」があるとします。
末尾から(右から)見て、最初に見つかった半角スペースから後ろ「xyzを取り出し
たいです。

RIGHT を使えば取り出すことはできるのですが、取り出したい文字列の長さが同じ
でないので使うことができません。

お願いします。

投稿日時 - 2014-02-26 20:14:31

QNo.8491590

困ってます

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(4)

ANo.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関数により検索ができなかったからです。
どんなデータでどんなデータを得られたいかをもっと詳しく教えて頂ければ、
答えするのに助かりますが。。。

よろしくお願いします。

投稿日時 - 2014-02-27 19:05:24

お礼

ありがとうございます。

返事が遅くなりましたが、
データとしては
部署名△チーム名△UP△社員番号
部署名△チーム名△DW△社員番号
部署名△チーム名△協力者社員番号
部署名△チーム名△社員番号
:
:
部署名△チーム名△UP△社員番号
部署名△チーム名△DW△社員番号

※△=半角スペース
日本語は、実際には、値が入っています。

の様なデータから
獲たいデータは、
UP△社員番号
DW△社員番号
協力者社員番号
社員番号
を取り出したいのです

投稿日時 - 2014-02-28 21:27:24

ANo.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)))

よろしくお願いします。

投稿日時 - 2014-02-27 10:36:42

お礼

ありがとうございます。

REVERSE関数があるとは知りませんでした。
取り出しはできたのですが、半角スペースが残るのですね。
LTRIM で消せました。

CHARINDEXで検索文字列を「123」とすると結果が得られ
ないのですが、REVERSE関数により反転してしまっている
からですか。

投稿日時 - 2014-02-27 18:27:31

ANo.2

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

投稿日時 - 2014-02-26 21:46:42

ANo.1

DECLARE @WORD1 VAERCHAR(100)
SET @WORD = 'abc 123 xyz'

SELECT RIGHT(@WORD,LEN(@WORD) - CHARINDEX(‘ ’,@WORD))

投稿日時 - 2014-02-26 20:52:34

お礼

ありがとうございます。

取り出しはできたのですが、
xyz
ではなく、
123 xyz
でした。

投稿日時 - 2014-02-27 18:18:52

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-