我有以下疑问:
UPDATE AmmUser.ORDINI_SCANSIONATI
SET NUMERO_ORDINE=replace((substring([Text],PATINDEX('%NR. [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%',[Text]),13)),'NR. ',''),
STATO=1
from AmmUser.ORDINI_SCANSIONATIIndexes
inner join AmmUser.ORDINI_SCANSIONATIDocs
on ORDINI_SCANSIONATIIndexes.DocumentID=ORDINI_SCANSIONATIDocs.DocumentID
inner join AmmUser.ORDINI_SCANSIONATI
on ORDINI_SCANSIONATIDocs.RecordID =ORDINI_SCANSIONATI.DsRecordID
where PageNumber IS NULL AND STATO IS NULL
在这个查询中,当我在文本列中找到“nr.”字符串时,我尝试将substring的值与我的变量numeroordine关联起来。
有时我没有“nr.”字符串,所以这个查询不起作用,我从substring函数得到错误的值。
如果文本中没有“nr.”字符串,如何创建相同的子字符串?我总是需要找出九个数字。
2条答案
按热度按时间jucafojl1#
一种方法是使用
CASE
表达式:也可以在搜索字符串时将模式添加到字符串的末尾:
在这种情况下这有点棘手,因为模式有点复杂。
eqzww0vc2#
我注意到我的代码有时有前缀“nr”和后缀“del”(在许多情况下,我同时有这两个后缀)。所以我使用了gordon提供的第一个解决方案,并进行了一些定制: