我数据库有不是0-9 A-F的字符,我该怎么一次性把其他字符的数据清除?
比如:
错误的情况:5B7C6200氂裐E`
20AD7DF90P,Df(8
14B6EC3A甬锎藏兝正常情况是不带那些乱码的。788D4D9729A2D1A3AEBDC3C
29A2D1A3AEBDC3CF
//
这样的 我想一次性其他他们
比如:
错误的情况:5B7C6200氂裐E`
20AD7DF90P,Df(8
14B6EC3A甬锎藏兝正常情况是不带那些乱码的。788D4D9729A2D1A3AEBDC3C
29A2D1A3AEBDC3CF
//
这样的 我想一次性其他他们
drop table tb
Go
Create table tb([col] nvarchar(16))
Insert tb
select N'5B7C6200氂裐E ' union all
select N'20AD7DF90P,Df(8' union all
select N'14B6EC3A甬锎藏兝'
Go
while exists (select 1 from tb where patindex('%[^0-9A-F]%',[col])>0)
begin
update tb set [col]=stuff([col],patindex('%[^0-9A-F]%',[col]),1,'')
where patindex('%[^0-9A-F]%',[col])>0
end
select * from tb
/*
col
----------------
5B7C6200E
20AD7DF90Df8
14B6EC3A
*/
RETURNS NVARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9,A-F]%',@S) > 0
SET @S = STUFF(@S,PATINDEX('%[^0-9,A-F]%',@S),1,N'')
RETURN @S
END---使用
DECLARE @STR NVARCHAR(100)
SET @STR=N'788D4D9729A2D1A3AEBDC3C'SELECT [dbo].[MY_STR](@STR)--res
-----------------------------
788D4D9729A2D1A3AEBDC3C(1 row(s) affected)
delete from mydata where PATINDEX('%[^0-9,A-F]%',[name]) > 0