2017-04-18 64 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(這是一個變量,但總是會在該點AFAIK)從所述串的第二最後一行。

我已經被玩弄的子字符串並將CHARINDEX功能,但一直無法得到它的權利。

在下面的代碼(與LogMsg作爲字符串)我試圖找回LapsedPrdr看看,如果我能得到它的工作,即使它是靜態的,但無濟於事。

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

對不起,缺乏明顯的知識或者,如果這個問題已經被問過,並感謝您提前瞭解關於此次的任何信息!

編輯:字符串恰好持有甲骨文命令,但列在SQL Server中。

謝謝。

+0

你能澄清你的問題? 「提取LapsedPrdr」是什麼意思?也許提供預期的結果將有助於在您的短信.. – Plirkee

+0

@Plirkee道歉我缺乏清晰的得到。通過提取我的意思是簡單地從字符串中的那一點拉文本。所以在我上面的例子中,將從較大的字符串中返回LapsedPrdr。雖然,LapsedPrdr是一個變量,所以我需要拉動任何填充該空間的內容。希望這可以幫助。 –

+2

@marc_s我正在使用SQL Server,該特定列包含要在Oracle數據庫上使用的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

謝謝你,這個方法工作得很好(雖然我不得不使用Charindex函數而不是INSTR,因爲我正在使用SQL Server)感謝你的幫助! –

相關問題