英文:
where 字符串 like '%[a-zA-Z]%'
where upper(字符串) like '%[A-Z]%'
韩文???

解决方案 »

  1.   

    如果只有英文和韩文
    /*******该函数返回字符串中除英文外的字符*********/
    create function test(@a varchar(20))
    returns varchar(20)
    as
    begin
       declare @b varchar(20),@i int
       set @b = ''
       set @i = 1
       while @i<= len(@a)
       begin
           if Upper(substring(@a,@i,1)) not between 'A' and 'Z'
               set @b = @b + substring(@a,@i,1)
    set @i = @i+1
       end
       return @b
    endSelect dbo.test('aabc12dsa451')                     
    -------------------- 
    12451(所影响的行数为 1 行)
      

  2.   

    是呀,不仅有数字可能还有其它ASCII码
      

  3.   

    简单做法:select * from 表 where len(列)<>datalength(列)
      

  4.   

    或:
    where 字符串 like '%[^A-z0-9]%'
      

  5.   

    --1.有关多国文字的,一定要用UNICODE判断!
    --2.韩文UNICODE分两断: 12592->12687  44032->55203 
    相关网站:http://www.buja.8u8.com/eeeeee.htm
    create function hw(@str Nvarchar(100))
    returns int
    as
    begin
    declare @a int
    set @a=0
    while @str<>'' and @a=0
      begin
      set @a=(case when unicode(left(@str,1)) between 12592 and 12687 
                     or unicode(left(@str,1)) between 44032 and 55203 
                   then 1 
                   else 0 end)
      set @str=right(@str,len(@str)-1)
      end
    return @a
    end  --调用:
    declare @a nvarchar(100)
    set @a=N'abc中&#44035;国123'
    select dbo.hw(@a)--return: 1
    set @a=N'abc中国123'
    select dbo.hw(@a)--return: 0
      

  6.   

    贴出显示出错了。
    set @a=N'abc中&#44035;国123'
    &#44035;----网页上贴不出来,原来是韩文,查询分析器上可以看到文字:
    select nchar(44035)
      

  7.   

    select * from 表 where len(列)<>datalength(列),这种方法我试过,不行
      

  8.   

    大力的判断有些不全面. teaism()  的方法应该不错.
      

  9.   

    由于历史原因,开始设计的时候没有使用nvarchar,nchar类型,现在也不可能用了
    所以看看大家有没有其它办法
      

  10.   

    可以测试,执行sp_helplanguage后可以出来韩文,但如果你的windows没有装韩文包会是乱码
      

  11.   

    来100个韩文:select top 100 identity(int,44032,1) as id into #t
    select nchar(id) from #tdrop table #t你再HW函数试试就知道了. 一定要:N'韩文'
      

  12.   

    谢谢各位,但是上面说了不能声明NVarchar,NChar,因为数据库早就几年前设计完成了,我没有办法改表结构了
      

  13.   

    除非你表内的排序规则出是韩文排序规则的。否则基本没戏。
    set nocount on
    declare @a table(a varchar(100) collate Korean_Wansung_CS_AI_KS_WS)
    insert @a select N'abc&#54620;&#44397;&#50612;'
    insert @a select N'abc&#54620;&#44397;&#50612;'
    insert @a select N'abc'
    select * from @a
      

  14.   

    除非你表内的排序规则出是韩文排序规则的。否则在中文下基本没戏。
    set nocount on
    declare @a table(a varchar(100) collate Korean_Wansung_CS_AI_KS_WS)
    --用VARCHAR但排序规则得是韩文排序规则
    insert @a select N'abc'+nchar(54620)+nchar(44397)+Nchar(50612)
    insert @a select N'abc'+nchar(54620)+nchar(44397)+Nchar(50612)
    insert @a select N'abc'
    select * from @a
      

  15.   

    create function get_hw(@str Nvarchar(100))
    returns nvarchar(100)
    as
    begin
    declare @a nvarchar(100)
    set @a=''
    while @str<>'' 
      begin
      set @a=@a+(case when unicode(left(@str,1)) between 12592 and 12687 
                     or unicode(left(@str,1)) between 44032 and 55203 
                   then left(@str,1)
                   else '' end)
      set @str=right(@str,len(@str)-1)
      end
    return @a
    end  --就是说你原字段中如果VARCHAR类型无法改变,得是韩文排序规则。
    --如:Korean_Wansung_CS_AI_KS_WSset nocount on
    declare @a table(a varchar(100) collate Korean_Wansung_CS_AI_KS_WS)
    insert @a select N'abc'+nchar(54620)+nchar(44397)+Nchar(50612)
    insert @a select N'abc'+nchar(54620)+nchar(44397)+Nchar(50612)
    insert @a select N'abc'
    select * from @a--这样就能够得到正确的韩文,否则在中文环境下根本无法得到韩文
    select dbo.get_hw(a) from @a