如何解决如何从sql中的字符串中删除特定模式
我有很多像下面这样的字符串
COLGATE GRF 75 GMS (Rs. 65)( 72 PCS )
COLGATE GRF 100 GM (RS.90) - relaunch( 72 PCS )
COLGATE GRF 100 GM (RS.88) COLLECTIBLES( 72 PCS )
COLGATE GRF 100 GMS (Rs. 85)( 72 PCS )
并希望从 sql 中的字符串中删除 (Rs. 65) 等。我的尝试如下。
select SUBSTRING ('COLGATE GRF 75 GMS (Rs. 65)( 72 PCS )',CHARINDEX('(','COLGATE GRF 75 GMS (Rs. 65)( 72 PCS )'))
解决方法
您可以同时使用 SUBSTRING
和 REPLACE
函数来实现此目的:
DECLARE @STR VARCHAR(MAX)='COLGATE GRF 75 GMS (RS. 65)( 72 PCS )'
SELECT SUBSTRING (@STR,CHARINDEX('(',@STR),(CHARINDEX(')',@STR)-CHARINDEX('(',@STR))+1)
SELECT REPLACE (@STR,SUBSTRING (@STR,@STR))+1),'')
输出:
COLGATE GRF 75 GMS ( 72 PCS )
,
将您的意图理解为从字符串中删除第一组括号(您对所有括号一无所知)那么这只是一个声明:
declare @s varchar(100)='COLGATE GRF 100 GM (RS.88) COLLECTIBLES( 72 PCS )'
select Left(@s,CharIndex('(',@s)-1)+Right(@s,Len(@s)-charIndex(')',@s))
,
找到括号的开头和结尾。首先,使用 (Rs
查找。之后使用 STUFF()
删除它。这将适用于 (Rs ??)
作为第一次出现与否。请注意,它只会删除第一次出现。
SELECT *,STUFF(col,s,e - s + 1,'')
FROM tbl t
CROSS APPLY
(
SELECT s = CHARINDEX('(Rs',col)
) s
CROSS APPLY
(
SELECT e = CHARINDEX(')',col,s)
) e
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。