SQL String解析并获取某些值

时间:2016-07-28 02:52:13

标签: sql-server sql-server-2008

我有一个字符串,我必须解析并检索帐单ID字段。我的字符串可以有一个账单ID或多个账单ID。

Route::group(['middleware' => ['web']], function () {

2 个答案:

答案 0 :(得分:1)

借助于Parser函数。

Declare @str nvarchar(1000)
set @Str = 'Process of submitting the bill id: AS12345 is send back to Customer. Bill id:WE23456 and Bill id: AS12345 came from customers'

-- Clean and Normalize String
Set @Str = Replace(Replace(Replace(@Str,'Bill id','BILLID'),'BILLID :','BILLID:'),'BILLID: ','BILLID:')
Select Distinct BillID=Replace(Key_Value,'BILLID:','') 
 From  [dbo].[udf-Str-Parse](@Str,' ') 
 Where Key_Value Like 'BILLID%'

返回

BillID
AS12345
WE23456

UDF

ALTER FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimeter varchar(10))
--Usage: Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
--       Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
--       Select * from [dbo].[udf-Str-Parse]('id26,id46|id658,id967','|')
--       Select * from [dbo].[udf-Str-Parse]('hello world. It. is. . raining.today','.')

    Returns @ReturnTable Table (Key_PS int IDENTITY(1,1), Key_Value varchar(max))
    As
    Begin
       Declare @XML xml;Set @XML = Cast('<x>' + Replace(@String,@Delimeter,'</x><x>')+'</x>' as XML)
       Insert Into @ReturnTable Select Key_Value = ltrim(rtrim(String.value('.', 'varchar(max)'))) FROM @XML.nodes('x') as T(String)
       Return 
    End

答案 1 :(得分:0)

我认为使用正则表达式id:\s*[A-Z][A-Z][0-9]+的自定义函数。