[求助]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编辑过]
如果有可能,设置数据库为大小写不敏感。 <P>设置数据库不太合适,因为不止这一个应用,不可能为了这一个应用去设置。</P>
<P>而且我这个页面也设置了checkbox来决定是否忽略大小写</P>
<P>我现在的做法是</P>
<P>在asp.net代码里检查s_name是否含多字节字符,如果是的话,sql语句就不用upper,那么哪怕选了忽略大小写也不会忽略大小写。</P>
<P>这样的话输入"我是superman"就不能忽略大小写了,挺无奈的做法</P>
[此贴子已经被作者于2006-1-23 11:17:58编辑过]
我在ASE15(GB18030)下测试了一下,<br>1> select upper('人民a')<br>2> go<br> <br> ----- <br> 人民A <br><br>而在ASE12.5.3(ISO-1)下测试结果为:人醚A。<br>请把sp_helpsort/select @@version的结果放出来<br><br> <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>! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? <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编辑过]
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]