sql 删去记录中指定字符开头的字符串

2025-03-24 06:23:13
推荐回答(4个)
回答1:

什么数据库
sqlserver中好像没有正则替换的函数,你得自己写了
CREATE FUNCTION dbo.regexReplace
(
@source ntext, --原字符串
@regexp varchar(1000), --正则表达式
@replace varchar(1000), --替换值
@globalReplace bit = 1, --是否是全局替换
@ignoreCase bit = 0 --是否忽略大小写
)
RETURNS varchar(1000) AS
BEGIN
DECLARE @hr integer
DECLARE @objRegExp integer
DECLARE @result varchar(5000)

EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
EXEC @hr = sp_OADestroy @objRegExp
RETURN null
END
EXEC @hr = sp_OASetProperty @objRegExp, 'Pattern', @regexp
IF @hr <> 0 BEGIN
EXEC @hr = sp_OADestroy @objRegExp
RETURN null
END
EXEC @hr = sp_OASetProperty @objRegExp, 'Global', @globalReplace
IF @hr <> 0 BEGIN
EXEC @hr = sp_OADestroy @objRegExp
RETURN null
END
EXEC @hr = sp_OASetProperty @objRegExp, 'IgnoreCase', @ignoreCase
IF @hr <> 0 BEGIN
EXEC @hr = sp_OADestroy @objRegExp
RETURN null
END
EXEC @hr = sp_OAMethod @objRegExp, 'Replace', @result OUTPUT, @source, @replace
IF @hr <> 0 BEGIN
EXEC @hr = sp_OADestroy @objRegExp
RETURN null
END
EXEC @hr = sp_OADestroy @objRegExp
IF @hr <> 0 BEGIN
RETURN null
END

RETURN @result
END

我测试了一下,没有问题:(将字符'第'紧接后面连续出现的数字都替换成空)
print dbo.regexReplace('中国 统计 年鉴 2007 总 第26 期','第\d*','')
结果是 中国 统计 年鉴 2007 总 期

回答2:

delete from 表名 where 字段名 like ' 第%'

回答3:

delete from 表名 where 字段名=‘12%’
直接删除这一行的数据,同时删除本行的自增列编号

回答4:

delete from 表A where lefttrim(righttrim(字段名)) like '第%'