fansfly 发表于 2006-1-23 09:20:59

[求助]sybase查询忽略大小写问题(要求对多字节可靠)

<P>在用asp.net做一个查询页面</P>
<P>用的是sybase数据库</P>
<P>因为某些字段模糊查询的时候要忽略用户输入的大小写,所以用了upper函数</P>
<P>比如"select * from TABLEA where upper(NAMEA) like '%"+s_name.ToUpper()+"%'"</P>
<P>结果发现,如果输入的是中文字符,upper(NAMEA) 出来就会变成怪字符(当然后面的.net里的ToUpper()函数是正常的)</P>
<P>而我原先的目的是只对26个字母进行大写转换</P>
<P>请问如何实现我的目的。</P>
[此贴子已经被作者于2006-1-23 9:23:46编辑过]

flybean 发表于 2006-1-23 10:56:36

如果有可能,设置数据库为大小写不敏感。

fansfly 发表于 2006-1-23 11:11:33

<P>设置数据库不太合适,因为不止这一个应用,不可能为了这一个应用去设置。</P>
<P>而且我这个页面也设置了checkbox来决定是否忽略大小写</P>
<P>我现在的做法是</P>
<P>在asp.net代码里检查s_name是否含多字节字符,如果是的话,sql语句就不用upper,那么哪怕选了忽略大小写也不会忽略大小写。</P>
<P>这样的话输入"我是superman"就不能忽略大小写了,挺无奈的做法</P>
[此贴子已经被作者于2006-1-23 11:17:58编辑过]

flybean 发表于 2006-1-23 11:18:26

我在ASE15(GB18030)下测试了一下,<br>1&gt; select upper('人民a')<br>2&gt; go<br>       <br> ----- <br> 人民A <br><br>而在ASE12.5.3(ISO-1)下测试结果为:人醚A。<br>请把sp_helpsort/select @@version的结果放出来<br><br>

fansfly 发表于 2006-1-23 11:30:31

<P>                                                                   <br>-                                                                  <br>Character Set = 1, iso_1                                           <br>    ISO 8859-1 (Latin-1) - Western European 8-bit character set.   <br>Sort Order = 50, bin_iso_1                                       <br>    Binary Sort Order for the ISO 8859-1 (Latin-1) Character Set   </P>
<P>                                                                   <br>-                                                                  <br>! " # $ % &amp; ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; &lt; = &gt; ?    <br>@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _<br>` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ ? <br>???????????????????????????????? <br>????????????????    </P>

<P>SQL Server/11.0.3/P/SCO/SCO_SV r3.2v5.0.2/2/OPT/Fri Jul 18 19:10:23 PDT 1997 <br></P>
[此贴子已经被作者于2006-1-23 11:31:23编辑过]

flybean 发表于 2006-1-23 12:30:14

Character Set = 1, iso_1                                           <br>    ISO 8859-1 (Latin-1) - Western European 8-bit character set.   <br>Sort Order = 50, bin_iso_1                                       <br>    Binary Sort Order for the ISO 8859-1 (Latin-1) Character Se<br><br>放在客户端处理吧,呵呵<br>
页: [1]
查看完整版本: [求助]sybase查询忽略大小写问题(要求对多字节可靠)

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com