[pgsql-jp: 27694] ’=’はマルチバイト文字をサポートしませんか

arong arong @ sis.sh.cn
2002年 10月 21日 (月) 01:03:53 JST


This is a multi-part message in MIME format.

--Boundary_(ID_PIVXhiSOgKbJybJszsx2Qg)
Content-type: text/plain; charset=iso-2022-jp
Content-transfer-encoding: 7BIT

アロンです。

 前提:OSはRetHatLinux7.3で、PostgreSQLはrpmにてインストール
         されたもので、ソース再コンパイルは行われていません。
         各種DB機能は正常に動作していると思われます。

 現象:キャラクターセットUNICODEでテーブルを一つ作成しました。
         Varcharタイプのフィールドは一つで、データ量は40万行ぐらいです。
         PostgreのJDBCを使って、テストプログラムを作って、
         SQL文、たとえば
            select name from tbl_name where name = '赤羽根';
         を実行すれば、検索結果には'、赤羽根'以外'赤羽石'も入
         っています。 検索条件を'赤羽石'にしても、結果は同じです。

         そこで、SQL文を
            select name from tbl_name where like '赤羽根';
         に変更したら、結果は正しいでした。でも、効率はよくないです。

LIKEはマルチバイト文字セットをサポートするとドキュメントに記述され
ていますが、オペレーター’=’はサポートしませんですか。 それとも、
ほかの原因があるのですか。何か、いい解決方法はありませんか。


==========================================
        阿    榮
上海E-mail:arong @ sis.sh.cn
==========================================

--Boundary_(ID_PIVXhiSOgKbJybJszsx2Qg)
Content-type: text/html; charset=iso-2022-jp
Content-transfer-encoding: 7BIT

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-2022-jp" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT size=2>アロンです。</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT 
size=2>&nbsp;前提:OSはRetHatLinux7.3で、PostgreSQLはrpmにてインストール<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
されたもので、ソース再コンパイルは行われていません。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
各種DB機能は正常に動作していると思われます。</FONT></DIV>
<DIV><FONT 
size=2><BR>&nbsp;現象:キャラクターセットUNICODEでテーブルを一つ作成しました。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
Varcharタイプのフィールドは一つで、データ量は40万行ぐらいです。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
PostgreのJDBCを使って、テストプログラムを作って、<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
SQL文、たとえば<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
select name from tbl_name where name = 
'赤羽根';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
を実行すれば、検索結果には'、赤羽根'以外'赤羽石'も入<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
っています。 検索条件を'赤羽石'にしても、結果は同じです。<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
そこで、SQL文を<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
select name from tbl_name where like 
'赤羽根';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
に変更したら、結果は正しいでした。でも、効率はよくないです。<BR></DIV></FONT>
<DIV><FONT size=2>LIKEはマルチバイト文字セットをサポートするとドキュメントに記述され</FONT></DIV>
<DIV><FONT size=2>ていますが、オペレーター’=’はサポートしませんですか。&nbsp;それとも、</FONT></DIV>
<DIV><FONT size=2>ほかの原因があるのですか。</FONT><FONT 
size=2>何か、いい解決方法はありませんか。</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT 
size=2>==========================================&nbsp;&nbsp;<BR>&nbsp;&nbsp; 
     阿    榮<BR>上海<A 
href="mailto:E-mail:arong @ sis.sh.cn">E-mail:arong @ sis.sh.cn</A><BR>==========================================</FONT></DIV></BODY></HTML>

--Boundary_(ID_PIVXhiSOgKbJybJszsx2Qg)--



pgsql-jp メーリングリストの案内