sql关于字符问题?

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

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

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

788D4D9729A2D1A3AEBDC3C
29A2D1A3AEBDC3CF
//
这样的 我想一次性其他他们
...全文
127 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hucaiyu2009 2010-10-22
  • 打赏
  • 举报
回复
搞定 呵呵 谢谢2位大侠
delete from mydata where PATINDEX('%[^0-9,A-F]%',[name]) > 0
「已注销」 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
*/

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧