2017-04-18 10 views
1

さまざまな長さのSQLの文字列から変数を選択しようとしていますが、そのために苦労しています。SQL Serverでさまざまな長さの文字列から変数を選択する方法

Oracle Plug-in: Executing SQL statement: SELECT * FROM (SELECT ROW_NUMBER() 
OVER (ORDER BY "Example"."Example" 
DESC,"DETAILS"."DETAILS" DESC) AS 
Ranking,"Example"."FIRST_NAME" AS "FIRST_NAME", 
"DETAILS"."LAST_NAME" AS "LAST_NAME", 
"DETAILS"."CONTACT_ID" AS "RepID", 
"DETAILS"."DETAIL_NOTES_NUM" AS "DETAIL_NOTES_NUM", 
"DETAILS"."TYPE" AS "IMG", 
"DETAILS"."EMAIL" AS "img", 
"DETAILS"."EMAIL" AS "EMAIL", 
"DETAILS"."NEWS_DT" AS "NEWS_DT", 
"DETAILS"."FIRM_NAME" AS "FIRM_NAME", 
"DETAILS"."DETAIL_NOTES" AS "DETAIL_NOTES", 
"DETAILS"."CITY" AS "CITY", 
"DETAILS"."STATE" AS "STATE" FROM 
"DETAILS" "DETAILS" LEFT JOIN 
"DETAILS"."Example" "YXISMOBILE.MV_VMW_USERREPRELTN" ON 
"DETAILS"."CONTACT_ID" = 
"DETAILS_USERREPRELTN"."REPID" WHERE ( 
"DETAILS_USERREPRELTN"."USERID" = 'clooby') AND ( 
"DETAILS"."TYPE" = 'LapsedPrdr')) LimitingTable WHERE 
Ranking <= 200 

私は、文字列の最後から二番目の行からLapsedPrdr(変数であるが、常に私の知る限り、そのスポットになります)を抽出しようとしています:たとえば、文字列はようにしてもよいが来る

私はサブリング関数とCHARINDEX関数を使って遊んでいますが、それを正しく取得できませんでした。

LogMsgが文字列である以下のコードでは、LapsePrdrを取得して静的であっても機能しているかどうかを確認しようとしていましたが、役に立たないものです。

Select substring(LogMsg, CHARINDEX('LapsedPrdr', logmsg) , CHARINDEX('))' ,logmsg)) as TYPE 

明白な知識が不足している場合、またはこの質問が以前に尋ねられた場合は申し訳ありません。この情報について事前におねがいします。

EDIT:文字列にはOracleコマンドが含まれていますが、その列はSQL Serverにあります。

ありがとうございます。

+0

あなたの質問を明確にもらえますか? 「LapsedPrdrを抽出する」とはどういう意味ですか?たぶん期待された結果を提供することは、あなたのメッセージを伝えるのに役立ちます。 – Plirkee

+0

@Plirkeeわかりにくいことに謝罪します。抽出すると、文字列のその点からテキストを単に引くことを意味します。だから私の上記の例では、大きな文字列からLapsedPrdrを返すことになります。しかし、LapsedPrdrは変数なので、そのスペースに何が入っていても引き出す​​必要があります。お役に立てれば。 –

+2

@marc_s私はSQL Serverを使用しています。その特定の列には、Oracle DBで使用するSQL文が含まれています。しかし、このテーブルが格納されているデータベースはMS SQL Serverです。そこで、Microsoft SQLを使用して部分文字列を抽出します。混乱の謝罪 –

答えて

1

おそらく、部分文字列に+ 1や-1を追加する必要があります。

Select substring(LogMsg, 
       CHARINDEX('"DETAILS"."TYPE" = ', LogMsg), 
       CHARINDEX(')) LimitingTable WHERE ', LogMsg) - 
       CHARINDEX('"DETAILS"."TYPE" = ', LogMsg) 
     ) As TYPE 
From Table 

SUBSTRING(string_expression、開始、長さ)

CHARINDEX(expressionToFind、expressionToSearch [、START_LOCATION])

+0

ありがとう、このメソッドは完全に機能しましたが(SQL Serverを使用しているので、INSTRの代わりにCharindex関数を使用しなければなりませんでした)。 –

関連する問題