我有一个字符串,我必须解析并检索帐单ID字段。我的字符串可以有一个账单ID或多个账单ID。
Route::group(['middleware' => ['web']], function () {
答案 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]+
的自定义函数。