sql关于字符问题?

hucaiyu2009 2010-10-21 03:01:48
我数据库有不是0-9 A-F的字符,我该怎么一次性把其他字符的数据清除?
比如:
错误的情况:

5B7C6200氂裐E`
20AD7DF90P,Df(8
14B6EC3A甬锎藏兝

正常情况是不带那些乱码的。

788D4D9729A2D1A3AEBDC3C
29A2D1A3AEBDC3CF
//
这样的 我想一次性其他他们
...全文
92 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hucaiyu2009 2010-10-22
搞定 呵呵 谢谢2位大侠
delete from mydata where PATINDEX('%[^0-9,A-F]%',[name]) > 0
回复
zsh0809 2010-10-21
CREATE FUNCTION [dbo].[MY_STR](@S NVARCHAR(100))
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)
回复
水族杰纶 2010-10-21
if not object_id('tb') is null
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
*/
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-21 03:01
社区公告
暂无公告