
Postgres8です。
データベースのエンコーディングは【SQL_ASCII】です。
LIKE検索をした場合のSJISの文字化けに対する対処方法を教えてください
あいまい検索をしたいのですが、
文字化け対象文字を含む場合、
どのように記述すればいいのですか?
select * from aaa where name = 'パソ\コン';
上記のように完全一致で検索をすると抽出できます。
select * from aaa where name like '%パソ%'
上記のよう指定してlike検索をしても抽出できます。
しかし以下の場合どちらでも抽出できません。
select * from aaa where name like '%パソコ%'
select * from aaa where name like '%パソ\コ%'
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
> データベースのエンコーディングを【EUC_JP】に変更しないとだめでしょうか?
【SQL_ASCII】では、マルチバイト文字がマルチバイト文字として認識されないので、難しいと思います。
WHERE句などに日本語が有る場合、予期しない動作することもあるでしょう。
特にSJISを扱う場合は、エスケープ文字(5Ch)を含む文字の後ろに\を加えるなどの処置しないと、構文エラーを引き起こすこともあります。
例えば、下記の様なSQLの場合、構文エラーになってしまうと思います。
select * from aaa where name like '%パソ';
【SQL_ASCII】でないとだめということですが、どういった理由でしょうか?
【SQL_ASCII】のままで無理に日本語を扱う方法を探すよりは、【EUC_JP】もしくは【UNICODE】にする方法を考えたほうが良いかと思います。
No.1
- 回答日時:
PostgreSQLでSJISを扱う場合は、まず、データベースのエンコーディングを【EUC_JP】にします。
その上で、アプリケーション側で、クライアントエンコーディングをSJISに設定すれば、PostgreSQLが自動的に文字セットを変換してくれます。
http://www.postgresql.jp/document/pg802doc/html/ …
このようにすると、データベースに格納される日本語の文字列はEUCですが、アプリケーション側で取出されるものはSJISになります。
お尋ねのあいまい検索も問題なく処理できます。
DB作成コマンド 例 ------------------------------------------------
createdb -E EUC_JP test_db
------------------------------------------------------------------
PHPアプリケーション 例 -------------------------------------------
$conn = pg_connect('host=localhost dbname=test_db user=test_user password=test_pw');
pg_set_client_encoding($conn, 'SJIS');
------------------------------------------------------------------
データベースのエンコーディングは、Unicodeでも良いと思います。
この回答への補足
データベースのエンコーディングを【EUC_JP】に変更しないとだめでしょうか?
事情がありまして、エンコーディングは【SQL_ASCII】で
ないとだめなのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgresSQLの環境設定について
-
PostgreSQLの再インストールに...
-
quoteした文字列を使ったSQL文...
-
ディスク上のサイズの乖離が大...
-
Oracle / UNIX ファイルコマン...
-
ファイルに記述されている複数...
-
テーブル単位のリストア
-
PostgreSQL リストアエラー
-
行ロックをかけたい
-
階層型データベースとVSAM...
-
ACCESS VBA;コマンドボックス...
-
oracle sql*plusでの画面折り返...
-
データベースが開けません
-
関数引数に対する制限値チェッ...
-
psql でのエラー出力について
-
DBのバックアップとログの退避...
-
リコーimagioneo630 エラーs...
-
複数カラムを跨いだCOUNTができ...
-
Windows上のPostgreSQLの完全削...
-
バックアップとリストアについ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLについて教えてくだ...
-
createdbでいきなりつまづいて...
-
PL/pgSQL 引数の数
-
SJISのDBは作れますか?
-
quoteした文字列を使ったSQL文...
-
PostgreSQLの再インストールに...
-
PostgresSQLの環境設定について
-
postgresのdatabase名と、そのe...
-
initdbの文字コードと違う文字...
-
\\copyコマンドでのCSV取り込み...
-
ログイン履歴
-
PostgresSQLを使って、出退勤管...
-
IDの払い出し(文字列)
-
ディスク上のサイズの乖離が大...
-
ヤフーショッピングでPayPay支...
-
Windows版 pg_dumpの結果をログ...
-
oracle spool SJIS → UTF-8
-
Query OK, 0 rows affected
-
ファイルに記述されている複数...
-
CSVファイルをBULK INSERTでSQL...
おすすめ情報