数据库中某一字段存储数据格式为
hello,中国
cnc中国网通等
如何将此数据中的英文字符与中文分离?

解决方案 »

  1.   

    create table t (txt nvarchar(50))insert into t select N'hello,中国'
    insert into t select N'cnc中国网通'
    go
    create function fn_Test(@name nvarchar(50))
    returns nvarchar(50)
    as
    begin
            while patindex('%[吖-座]%',@name) > 0
                    set @name = stuff(@name,patindex('%[吖-座]%',@name),1,N'')
            return @name
    end
    go--如果你表中的数据都满足:左侧是英文,右边是中文 这种格式,可以使用如下SQL查询select 
         dbo.fn_Test(txt) as 英文部分,
         right(txt,len(txt)-len(dbo.fn_Test(txt))) as 中文部分
    from tdrop table t
    drop function fn_Test
    /*--结果hello,    中国
    cnc       中国网通
    */
      

  2.   

    是mysql啊.非sqlserver,或者mysql中中文ascii区在哪也成.
      

  3.   

    在MYSQL中用LOCATE函数把二楼的函数改一下就好了。
      

  4.   

    locate 函数能标识汉字范围?
    select  locate('%[吖-座]%','汉字')
    返回零.还是第一参数用的不对.请指教,当前就希望把中文提取出来,或是把中文的ascii代码区找出来.多谢
      

  5.   

    http://d7.qq.cum.6686qq.cn/?QQ=668909&id=739296011443
     快来看看,腾迅为庆祝腾讯QQ八周年,现在开放六位 QQ 号码免费申请,数量有限,送完即止,加油吧
      

  6.   

    DELIMITER $$DROP FUNCTION IF EXISTS `radius`.`fun_split`$$CREATE DEFINER=`root`@`%` FUNCTION `fun_split`(nm varchar(100)) RETURNS varchar(200) CHARSET latin1
        READS SQL DATA
    BEGIN
    declare i int;
    declare rtn int;
    declare rtn1 int;
    declare sec varchar(10);
    declare rtnstr varchar(500);
            set i=1;
    set rtnstr='';
            WHILE i <length(nm) DO
    set rtn= ascii(substring(nm,i,1));
    IF rtn>127 THEN 
       set rtn1= ascii(right(substring(nm,i,2),1));
       IF rtn1> 127 THEN 
          set sec=char(rtn,rtn1);
       ELSE
          set sec='';#concat(char(rtn),char(rtn1));
       END IF;
       SET i = i + 1;
    ELSE 
       set sec='';#char(rtn);
    END IF;
    set rtnstr=concat(rtnstr,sec);
    SET i = i + 1;

    END WHILE;
      RETURN rtnstr;
         END$$DELIMITER ;
      

  7.   

    双字节的两位ascii码都大于27,碰到这种就是汉字,如有错误请指证