字符串

时间:2015-07-15 22:13:28

标签: tsql stored-procedures sql-server-2012

当我的网站前端插入失败时,我有一个用于错误记录的表。它将params URL存储为文本字符串,以便我们可以看到发送的值以及失败的原因。

我正在使用这些数据来尝试从中恢复一些记录。

这就是我记录中的记录:

xml=<data><optional><Account>192070041</Account></optional></data>, submitter=Q1370, target=Q1234, escalationType=esc, escalationReason=277, feedback=cx req live esc to have us release his alh payment for 8487.18, adv cx his funds are eligble for release on july 2nd at 445 pm est, preventable=0,

我正在尝试恢复一些数据的问题是,在我用PHP编写的脚本中,我通过在= sign上进行爆炸来获得每个值,从而得到所有参数。

嗯,feedback=部分恰好是包含逗号的评论,并且搞砸了很多东西。

我需要做的是在字符串中,我需要找到feedback=xxxxxxxxxx,中的所有内容,并删除该部分中的所有逗号或替换为|管道,以便我可以更改它们回来以后。

我在这个领域缺乏知识,我希望有人可以指出我正确的方向,这样我就能在大众层面上恢复一些记录。

实施例: 在字符串之前 - param1=dfsfsf, param2=fdsfsdfds, param3=bob, how are you doing today? 字符串后 - param1=dfsfsf, param2=fdsfsdfds, param3=bob| how are you doing today?

1 个答案:

答案 0 :(得分:1)

UPDATE YourTable SET URL=REPLACE(URL,',','|')

请参阅https://msdn.microsoft.com/en-us/library/ms186862.aspxhttps://msdn.microsoft.com/en-us/library/ms181984.aspx

稍后修改:我更仔细地阅读了您的问题,现在我知道您只想在某个子字符串后面替换逗号。尝试这样的事情:

DECLARE @URL NVARCHAR(1000)
SET @URL='Before String - param1=dfsfsf, param2=fdsfsdfds, param3=bob, how are you doing today?'

SELECT LEFT(@URL,ISNULL(NULLIF(CHARINDEX('param3=',@URL),0),LEN(@URL)))
    +ISNULL(REPLACE(SUBSTRING(@URL,NULLIF(CHARINDEX('param3=',@URL),0),1000),',','|'),'')
相关问题