【问题标题】:How to substitute a partial string?如何替换部分字符串?
【发布时间】:2020-11-21 00:25:37
【问题描述】:
提前感谢您的帮助。
我想从选择查询中删除部分字符串,其中有图例“ProcessError:Lens”后跟 12 个数字,并用破折号替换这 12 个数字。
我正在添加当前查询结果的结果:
Error Description
ProcessError : Lens 000300084502 is defect/scrap lens!
ProcessError : 20007 rejected
ProcessError : Lens 046000085174 is defect/scrap lens!
ProcessError : Lens 011900085176 is defect/scrap lens!
ProcessError : Lens 001200085188 is defect/scrap lens!
ProcessError : 20006 operation canceled
ProcessError : Lens 000300085787 is defect/scrap lens!
谢谢你,周末愉快。
【问题讨论】:
标签:
sql-server
substitution
【解决方案1】:
假设每条记录不超过一个键字符串,您可以将 patindex() 与 stuff() 一起使用
示例
Declare @YourTable Table ([Error Description] varchar(150))
Insert Into @YourTable Values
('ProcessError : Lens 000300084502 is defect/scrap lens!')
,('ProcessError : 20007')
,('ProcessError : Lens 046000085174 is defect/scrap lens!')
,('ProcessError : Lens 011900085176 is defect/scrap lens!')
,('ProcessError : Lens 001200085188 is defect/scrap lens!')
,('ProcessError : 20006')
,('ProcessError : Lens 000300085787 is defect/scrap lens!')
Select *
,NewVal = IsNull(stuff([Error Description]
,patindex('%Lens [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', [Error Description])
,17
,'Lens ------------'
),[Error Description])
from @YourTable
退货
Error Description NewVal
ProcessError : Lens 000300084502 is defect/scrap lens! ProcessError : Lens ------------ is defect/scrap lens!
ProcessError : 20007 ProcessError : 20007
ProcessError : Lens 046000085174 is defect/scrap lens! ProcessError : Lens ------------ is defect/scrap lens!
ProcessError : Lens 011900085176 is defect/scrap lens! ProcessError : Lens ------------ is defect/scrap lens!
ProcessError : Lens 001200085188 is defect/scrap lens! ProcessError : Lens ------------ is defect/scrap lens!
ProcessError : 20006 ProcessError : 20006
ProcessError : Lens 000300085787 is defect/scrap lens! ProcessError : Lens ------------ is defect/scrap lens!