update 表
set 字段= (
             case when charindex('月',字段)=0
                  then (case 
                           when isnumeric(字段)=1 
                           then convert(int,字段)
                           else
                           convert(int,left(字段,charindex('天',字段)-1))
                        end
                        )
                  else
                       day(
                            dateadd(
                                    day,-1,convert(datetime,(
                            convert(varchar,year(getdate()))+'-'+
                            convert(varchar,(convert(int,字段)+1))+'-01'
                                                             ))
                                   )      
                          )
                  end
          )

解决方案 »

  1.   

    谢谢各位,尤其是vivianfdlpw() 。
    如果使用charindex确实可以判断,只是写得比较长。我本来是想知道在一个字符串里面怎么区分中文字符和数字的。
      

  2.   

    用isnumeric或者ascii判断是否是数字
    或者判断unicode值
      

  3.   

    回复人: vivianfdlpw() ( ) 信誉:100  2005-08-19 15:05:00  得分: 0  
     
     
       用isnumeric或者ascii判断是否是数字
    或者判断unicode值  --不过好像要判断是不是中文字符就比较难,因为用双字节,最主要不是标准ascii码,遇到什么全角等输入的数字用isnumeric,ascii,unicode判断都认为是非标准字符!
      

  4.   

    --try 区分中文和数字的方式!
    select case when 字段 like N'%[啊-座]%' then '包含中文' else '不包含中文' end
    from 表
      

  5.   

    不行呀!
    select case when 'w我们' like N'%[啊-座]%' then '包含中文' else '不包含中文' end
    /*
               
    ---------- 
    不包含中文(1 row(s) affected)*/
    下面这个更晕,明明有“啊”,为什么还是认为没有啊select case when '啊' like N'%[啊-座]%' then '包含中文' else '不包含中文' end/*           
    ---------- 
    不包含中文(1 row(s) affected)
    */
      

  6.   

    --??楼上的再测试下哈!!我测试没有问题啊!!
    --测试:
    --情况1:
    select case when 'w我们' like N'%[啊-座]%' then '包含中文' else '不包含中文' end
    --结果
    ---------- 
    包含中文(所影响的行数为 1 行)
    --情况2:
    select case when '啊' like N'%[啊-座]%' then '包含中文' else '不包含中文' end
    --结果
    ---------- 
    包含中文(所影响的行数为 1 行)--情况3:
    --测试环境
    declare @T table(dhhm varchar(20))
    insert into @t select 'aa中'
    union all select '中国'
    union all select '中文啊'
    union all select '138111111啊'
    union all select '138111111'
    union all select '138222222'
    union all select '138333333'
    union all select '138222222'
    union all select '138333333'--查询语句
    select case when dhhm like N'%[啊-座]%' then '包含中文' else '不包含中文' end
    from @T--结果---------- 
    包含中文
    包含中文
    包含中文
    包含中文
    不包含中文
    不包含中文
    不包含中文
    不包含中文
    不包含中文(所影响的行数为 9 行)
      

  7.   

    楼上的,你楼上的测试过,就是不行! 我以为是我的sql 是繁体文的原因,我所有都替换为繁体文,可是还是
    select case when 'w我們' like N'%[啊-座]%' then '包含中文' else '不包含中文' end
    /*   
    ---------- 
    不包含中文(1 row(s) affected)
    */我的是8.0哦算了,可以讲一下原理吗?
      

  8.   

    查帮助:
    match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ][ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。而啊和座是头和尾,从而确定了一个范围
      

  9.   

    fxf66()--这个我知道,我主要不知道啊-座是否有效,我这里就是无效:_(
      

  10.   

    现在做的一个项目是找客户的自造字(windows可以用eudcedit自己造字),
    也要区分是英文字符还是中文,现在是一个字一个字取出,然后用ASCII判是否大于127,
    大于127的就是中文,
    变量是'n'开头的是unicode的,英文和中文都占两个字节,比较好做,
    不是unicode的就麻烦了,英文是一个字节,中文是两个字节.
      

  11.   

    @column_name like  '%[丂-狛]%'
    or @column_name like '%[狜-]%'
    or @column_name like '%[啊-齄]%'
      

  12.   

    用isnumeric或者ascii判断是否是数字