急问: SQL SERVER 数据库 从 rtf格式字符串 字段中模糊查找包含 某几个字符 的记录,如何处理?关键是这 某几个字符 不好处理成 rtf 格式. 
语言:VC.net
C#.net谢谢.

解决方案 »

  1.   

    不知道咋办,单独对查询的文字进行RTF编码的话,也不行,因为RTF文档是带格式的,勉强查询出来精确度也不高例如
    中国ABC
    如果没有应用格式的话,其RTF编码是
    \'d6\'d0\'b9\'faABC
    你如果模糊查找的时候可以使用 field LIKE '%\'d6\'d0\'b9\'faABC%'
    但是,如果给“中国”两上字设国红色加粗,“ABC”三个字设为蓝色倾斜的话,其RTF编码是
    \b\'d6\'d0\'b9\'fa\cf2\b0\i ABC\cf0\i0
    此时如果仍然使用单纯地不带格式的字符RTF编码的话,显示是查不出来的这种情况,我一般做法是用两个字段,一个字段存放RTF的内容,一个字段存放纯文本,后一个字段纯是为了查询用,至于这两个字段放在同一个表还是分两个表,自己看情况决定
      

  2.   

    感谢美羊羊!
    我的要求不高,只要能把
    -----------
    中国ABC 
    RTF编码是 
    \'d6\'d0\'b9\'faABC 
    --------------
    转换成功即可,因为这个字段内容没有字体变换,可以不用考虑。
      

  3.   

    只要能转换成RTF的编码就行。单独为查询而增加一个表,不是最佳方法。
      

  4.   

    楼主再查查RTF编码
    应该有更好的转换方法
    下面的你凑合着用用
                //采用GB2312编码
                System.Text.Encoding gb = System.Text.Encoding.GetEncoding( "gb2312" );
                string str = "中国ABC";  //要转换的内容
                StringBuilder sb = new StringBuilder();     //转换后的内容  sb.ToString()            byte[] b;
                foreach ( char item in str )
                {
                    if ( item > 255 )
                    {
                        //双字节字符
                        b = gb.GetBytes( item.ToString() );
                        sb.Append( string.Format( "\\\'{0:x2}\\\'{1:x2}", b[0], b[1] ) );
                    }
                    else
                    {
                        //单字节字符
                        sb.Append( item );
                    }
                }