我数据库有不是0-9 A-F的字符,我该怎么一次性把其他字符的数据清除?
比如:
错误的情况:5B7C6200氂裐E` 
20AD7DF90P,Df(8
14B6EC3A甬锎藏兝正常情况是不带那些乱码的。788D4D9729A2D1A3AEBDC3C
29A2D1A3AEBDC3CF
//
这样的 我想一次性其他他们

解决方案 »

  1.   

    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
    */
      

  2.   

    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)
      

  3.   

    搞定 呵呵 谢谢2位大侠
    delete from mydata where PATINDEX('%[^0-9,A-F]%',[name]) > 0