[前][次][番号順一覧][スレッド一覧]

mysql:9924

From: Koichi Taniguchi <Koichi Taniguchi <taniguchi@xxxxxxxxxx>>
Date: Thu, 29 Jul 2004 11:26:34 +0900
Subject: [mysql 09924] Re: perl による検索処理での日本語取り扱い(Win32,S-JIS)

谷口と申します。

On Thu, 29 Jul 2004 10:13:41 +0900
"Mamiya Masataka" <xc8m-mmy@xxxxxxxxxx> wrote:

> perl から DBD-mysql 経由で mySQL に接続、SELECT 文で日本語を使うのですが、
> 以下のような状況になります。
> 
>  $sth = $dbh->prepare (qq{ 
>   SELECT Field1 FROM mamiya00 WHERE  Field5 like '%間宮%'
>   });
> #この SQL 文を実行するとエラー(Internal Server Error)となります。
>  $sth = $dbh->prepare (qq{ 
>   SELECT Field1 FROM mamiya00 WHERE  Field5 like '%間%'
>   });
> #この SQL 文ではエラーとならず、間宮を抽出できます。
> 
> %間宮% を jcode.pl で euc に変換して実行すれば、エラーとはなりません。
> しかし、データベースの文字コードが Shift-JIS のため、
> 合致するデータが無く、抽出できません。

これは、MySQL 云々や、Win32 云々の問題ではないと思います。
そもそも、Shift_JIS で書く場合、Perl の基本的な文で、

print qq{間宮};

と

print qq|間宮|;

の両方を試してみると、上はダメだけど下はイケるはずです。
というのも、Shift_JIS の場合、「宮」の字の下位バイトが、0x7B
("{") にあたります。つまり上は、

print qq{間\x8B{};

と等価で、中括弧の対応が合いません。DBI を使われるという事で
あれば、プレースホルダを使われたほうが良いかと思います。


-- 
Koichi Taniguchi <taniguchi@xxxxxxxxxx>


[前][次][番号順一覧][スレッド一覧]

      9922 2004-07-29 10:13 ["Mamiya Masataka" <x] perl による検索処理での日本語取り扱い(Win32,S-JIS)
->    9924 2004-07-29 11:26 ┗[Koichi Taniguchi <ta]                                       
      9926 2004-07-29 13:44  ┗["Mamiya Masataka" <x]