如何从字段中解析出不需要的文本数据

时间:2018-10-05 18:00:07

标签: tsql ssms-2014

我正在使用续集服务器管理Studio 2014,我想知道如何解析选择查询的无关数据。我不希望修改数据,只是想从SSRS数据源中获取所需的信息,以使查询自动化。该查询看起来像下面列出的内容。

下面列出了注释字段中值的示例 “基于PO#105680-Thomas Test GRPO接收验证查询测试”

理想情况下,我只需要值'105680',因此可以将其用作查找参考。任何帮助将一如既往。

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

1 个答案:

答案 0 :(得分:2)

您可以使用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]