1.我用SQL SERVER2000做后台数据库平台,其中有张表叫做了  table
talbe里有一个字段a,类型为字符型,里面存放了商品名称的中文字比如可口可乐
芬达(进口品)
P4电脑等现在我要把A字段里的所有的记录值里的汉字取出来,另外的字符都过滤掉比如处理完成上面的三条记录如下
可口可乐
芬达进口品
电脑请问用何种办法来处理准确高效呢
问题二我在做一数据库查询,要求按照拼音查询,查询的办法了如下了:1.abcde  2.fghij  3.klmno 4.pqrst  5.uvwxy  6.z当我输入了1那把数据库里拼音为a开头或者B开头或者C开头或者D开头或者E开头的记录读出来当我输入了12那把满足以下条件拼音的记录读出来了:以af,ag,ah,ai,aj,bf,bg,bh,bi,bj,cf,cg,ch,ci,cj,df,dg,dh,di,dj,ef,eg,eh,ei,
ej以此规则类推有点像了手机里拼音输入的规则一样的来处理,请问各位大虾如何达到此目的,有无好的代码呢?

解决方案 »

  1.   

    1、可以自己写一个函数,汉字的内码大于(B1B2)
               B1=16+160
               B2=1602、将1、2、3、4、5、6输入到数据库中不同的表中(t1、t2、t2、t4、t5、t6),当输入12是将求t1、t2的迪卡尔积,依次类推
      

  2.   

    对于问題2,我想用以下的办法来做当你输了1我就把1开头的拼音记录读出来当你输了12我就从刚刚输入1已经读出来的记录里查找当你输了123我就从刚刚输入12已经读出来的记录里查找以此类推但我就不知道如何来用一条SQL语句搞定,难道要把数据了保存为临时表这样查一次了INSERT一次,记录一多怎么吃得消啦
      

  3.   

    function ByteType(const S: string; Index: Integer): TMbcsByteType;
      

  4.   

    1:var ans : AnsiString;
        wis : WideString;
        sub : Integer; //汉字个数
    Begin
      ans := '盗版delphi';
      wis := WideString( ans );
      sub := Length( ans ) - Length( wis );
    End;
      

  5.   

    汉字内码:
    一个汉字两各字节,ASCII>=127
    过滤掉ASCII<127的字节就可以了
    ord(s)取 ASCII