2014-10-30 52 views
0

我想從下面的查詢,將其插入另一表中的文本列返回插入到另一個列的數據庫名稱之間的字符串:SQL服務器 - 選擇兩個已知的字符串

EXEC master..sp_readerrorlog 0,1,"Database backed up. Database:" 

返回

數據庫備份。數據庫:databaseName,創建日期(時間):2014/06/13(17:49:54),頁面轉儲:197581,第一個LSN:488:6298:36,最後一個LSN:488:6314:1,轉儲設備數量:4,設備信息:...

繼從這裏其他職位recomandations,我寫道:

SUBSTRING([TEXT], LEN(LEFT([TEXT], CHARINDEX (': ', [TEXT]))) + 1, LEN([TEXT]) - LEN(LEFT([TEXT], 
CHARINDEX (': ', [TEXT]))) - LEN(RIGHT([TEXT], LEN([TEXT]) - CHARINDEX (', ', [TEXT]))) + 1) 
as DatabseName 

返回

'數據庫名稱,' 保持逗號

我試圖改變兩個CHARINDEX parameter '+1'沒有成功。

有人有關於如何擺脫逗號的想法?

回答

1

這條線怎麼樣?

SUBSTRING([TEXT], CHARINDEX('Database:', [TEXT]) + 10, CHARINDEX('creation date', [TEXT]) - (CHARINDEX('Database:', [TEXT]) + 12)) 
+0

無需搜索整個單詞並且使用大偏移,這將工作一樣好,並且是位較短:'SUBSTRING([TEXT],CHARINDEX( ':',[TEXT])+ 2 ,CHARINDEX(',',[TEXT]) - (CHARINDEX(':',[TEXT])+ 2))+1無論如何 – jpw 2014-10-30 13:32:31

+0

我也沒有工作。我的同事建議:'替換(SUBSTRING([TEXT],LEN(LEFT([TEXT],CHARINDEX(':',[TEXT])))+ 2,LEN([TEXT]) - LEN(LEFT([ TEXT],CHARINDEX(':',[TEXT]))) - LEN(RIGHT([TEXT],LEN([TEXT]) - CHARINDEX(',',[TEXT]))) - 0),',' ,'')',這是有效的。但我仍然想知道是否可以使用'Substring'和'Charindex'。 – Kukah 2014-10-30 13:42:00