我绊倒了一个字符串解析的问题;我试图实现的是用值替换标记字符串,但字符串匹配需要完美。请记住,在比较之前,我将表中的整个字符串(rowID int,segment nvarchar(max))分开,无论我在哪里找到空格,“The delta_s is§delta_s”的内容如下所示:TSQL搜索精确匹配到一个字符串
rowID |段
1 |
2 | deltaT_s
3 |是
4 | §deltaT_s
在此之后,我循环每行与我的表“替换”(idString nvarchar(max),val float);例如:
标记串(@segment): '§deltaT_s'
字符串替换(@idString): '§deltaT_s'
我使用(因为“之类的指令“是一个失败的原因,因为我可以看到):
SELECT STUFF(@segment, PATINDEX('%'[email protected]+'[^a-z]%', @segment), LEN(@idString), CAST(@val AS NVARCHAR(MAX)))
其中@val是从替换表中取代的数字。现在
,在我的 “替代品” 的表我有2个三角状的标记
1)§deltaT_s
2)§deltaT
我的问题是,当周期开始比较节段和标记,然后§deltaT出现,它将以这种方式替换字符串的第一部分
“§deltaT_s” - >“10_s”
我不明白我在做什么错误的正则表达式的任何人都可以给我和手在这个问题上?
我可用的情况下需要更多信息。
谢谢 F.
我很困惑。如果你一字一句地分开字符串,为什么不用'='来比较呢? –
因为可能会出现字符串也可能是这样的“deltaT_s是§deltaT_s,请参阅ya!” (用标记词旁边的逗号)。当发生分裂时,我会有一个类似'§deltaT_s'的区段,其中正常比较不起作用(afaik)。如果有解决方法,请赐教。谢谢 – user3247900
你为什么不使用REPLACE?例如:SELECT REPLACE(@ segment,@ idString,CAST(@val as NVARCHAR(MAX)) –