sql 中的截取是这样写的  select substring(要载取的字段,从那一位开始,载取的长度);
eg:select substring('我是中国人我是中国人我是中国人',1,5)
得到的结果是:我是中国人

解决方案 »

  1.   

    截取用substring就可以
    关键是你这种情况,怎么区分11位或12位的号码是手机号码还是座机号码呢?座机号码又怎么区分区号是3位还是4位呢?
    如果区号和号码之间用一短杠隔开,用case判断一下还是可以的
      

  2.   

    标记一下 走人
    在CSDN上真能学到东西啊
      

  3.   

    如果座机号码中区号后有个"-",则可以这样写,参考一下:select (case charindex('-',CallNumber)
               when 0 then substring(CallNumber,0,len(CallNumber)-3) 
               when 4  then substring(CallNumber,0,CHARINDEX('-',CallNumber)) 
               when 5  then substring(CallNumber,0,CHARINDEX('-', CallNumber)) 
               end) as number
    from CallDetail
      

  4.   

    换种思路,既然手机号码都是以11外开头的,那你可以将不是0开头的所有号码加个特别数字如9
    则整个就很容易区分的,
    131********,加个9131********。
    本地的不对还以0开头的,那么现在substring,12位就应该是手机了,剩下的就是其它号码了。