2014-10-30 3 views
0

Я пытаюсь вставить в другой столбец имя базы данных от возвращения столбца TEXT по следующему запросу, который был вставлен в другую таблицу:SQL Server - Выберите строку между двумя известными строками

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]) +- , CHARINDEX (',', [TEXT]) - (CHARINDEX (':', [TEXT]) + 2)) '+1 в любом случае – jpw

+0

Я тоже не работал. Мой коллега предлагает: «заменить (SUBSTRING ([TEXT], LEN (LEFT ([TEXT], CHARINDEX (':', [TEXT]))) + 2, LEN ([TEXT]) - LEN (LEFT ([ TEXT], CHARINDEX (':', [TEXT]))) - LEN (RIGHT ([TEXT], LEN ([TEXT]) - CHARINDEX (',', [TEXT]))) - 0), ',' , '') ', который работает. Но мне все же хотелось бы знать, возможно ли это просто использовать 'Подстрока' и' Charindex'. – Kukah

Смежные вопросы