Как я могу разобрать нежелательные текстовые данные из поля - PullRequest
0 голосов
/ 05 октября 2018

Я использую Sequel Server Management Studio 2014, и мне интересно, как я могу разобрать, что является посторонними данными для выбранного запроса.Я не хочу изменять данные, только чтобы получить то, что мне нужно от них для источника данных SSRS, для автоматизации запроса.Запрос будет выглядеть так, как указано ниже.

Пример значения в поле для комментариев приведен ниже «На основе заказа на поставку № 105680 - тест запроса проверки GRPO« Проверка получения GRPO »*

В идеале мне нужно только значение« 105680 », поэтому яможет использовать его как справочник по поиску.Любая помощь будет оценена как всегда.

SELECT
   [DocEntry]
  ,[DocNum]
  ,[DocType]
  ,[CANCELED]
  ,[Comments]
  FROM [Billy].[dbo].[OPDN]

1 Ответ

0 голосов
/ 05 октября 2018

Вы можете использовать CHARINDEX, чтобы найти PO # в тексте, а затем SUBSTRING, чтобы разобрать номер, если формат соответствует.

;WITH TEMP AS (SELECT  'Based on PO #105680 - Thomas Test GRPO Reciept Validation query test' AS comment )

SELECT comment, 
    CASE WHEN TEMP.comment LIKE '%PO #%' THEN SUBSTRING(TEMP.comment, CHARINDEX('PO #', TEMP.comment) + 4, CHARINDEX('PO #', TEMP.comment, CHARINDEX(' ', TEMP.comment) + 1) - 4) END AS PO_NUM
FROM TEMP

Ваш запрос будет выглядеть примерно так:

SELECT
   [DocEntry]
  ,[DocNum]
  ,[DocType]
  ,[CANCELED]
  ,[Comments]
  ,CASE WHEN Comments LIKE '%PO #%' THEN SUBSTRING(Comments, CHARINDEX('PO #', Comments) + 4, CHARINDEX('PO #', Comments, CHARINDEX(' ', Comments) + 1) - 4) END AS PO_NUM
FROM [Billy].[dbo].[OPDN]
...