- お獅子
- 大ベテラン
- 会議室デビュー日: 2004/09/14
- 投稿数: 160
|
投稿日時: 2005-10-31 12:16
お世話になっております。
Oracleで半角カナの小文字"ュ"などの文字を大文字の"ユ"に変換する関数はありますか?
また、簡単に変換する方法があれば教えて頂きたいです。
よろしくお願いします。
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-31 12:37
引用: |
|
黒獅子さんの書き込み (2005-10-31 12:16) より:
Oracleで半角カナの小文字"ュ"などの文字を大文字の"ユ"に変換する関数はありますか?
また、簡単に変換する方法があれば教えて頂きたいです。
|
取得したプログラム側にやらせるのが一般的だと思いますが、
SQL コマンド内でやりたいのでしょうか?
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- お獅子
- 大ベテラン
- 会議室デビュー日: 2004/09/14
- 投稿数: 160
|
投稿日時: 2005-10-31 13:10
じゃんぬねっとさん、こんにちわ
検索条件の文字内に半角小文字があった時に半角大文字に変換したものと、そのままの文字列で検索したいのです。
例えば:
画面で"リョウイチ"と入力されたら、
"リョウイチ"と"リヨウイチ"で検索し、該当データを抽出する。
これをSQL側で簡単にやる方法が無いかと思いまして。。
プログラム側でやるにしても、方法としては1文字ずつ検索し小文字を大文字に変換するロジックを組むしかないのでしょうか?
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-31 13:20
引用: |
|
黒獅子さんの書き込み (2005-10-31 13:10) より:
これをSQL側で簡単にやる方法が無いかと思いまして。。
|
"簡単に" とはいかないでしょうね。
Function で結果を返すとかそういった手法になるでしょうか。
色々見てみましたが、簡単に変換できそうなものはないですよね。
(Lower、Upper はアルファベットでないとダメっぽいですし)
引用: |
|
プログラム側でやるにしても、方法としては1文字ずつ検索し小文字を大文字に変換するロジックを組むしかないのでしょうか?
|
言語にも因りますよね。
VB であれば、StrConv 関数が使えます。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- 今川 美保(夏椰)
- ぬし
- 会議室デビュー日: 2004/06/10
- 投稿数: 363
- お住まい・勤務地: 神奈川県茅ヶ崎市
|
投稿日時: 2005-10-31 13:26
めんどくさいですが、こんな感じでしか自分は思いつきませんでした。
# Oracle9iR2で実験
全角版
コード: |
|
select
translate('アァイィウゥエェオォカガキクケコサシスセトタチツッテトナニヌネノハヒフヘホマミムメモヤャユュヨョラリルレロワヲン',
'ァィゥェォッャュョ','アイウエオツヤユヨ' ) Ans
from dual ;
|
コード: |
|
ANS
--------------------------------------------------------------------------------
アアイイウウエエオオカガキクケコサシスセトタチツツテトナニヌネノハヒフヘホマミム
メモヤヤユユヨヨラリルレロワヲン
|
半角版
コード: |
|
select
translate('アァイィウゥエェオォカキクケコサシスセソタチツッテトナニヌネノハヒフヘコマミムメモヤャユュヨョラリルレロワヲン',
'ァィゥェォッャュョ','アイウエオツヤユヨ' ) Ans
from dual ;
|
コード: |
|
ANS
-------------------------------------------------------
アアイイウウエエオオカキクケコサシスセソタチツツテトナニヌネノハヒフヘコマミムメモヤヤユユヨヨラリルレロワヲン
|
[ メッセージ編集済み 編集者: 夏椰【SUICA】 編集日時 2005-10-31 13:26 ]
|
- かつのり
- ぬし
- 会議室デビュー日: 2004/03/18
- 投稿数: 2015
- お住まい・勤務地: 札幌
|
投稿日時: 2005-10-31 13:46
テーブルに本来の名前と検索用の名前の両方を格納するようにし、
例の「リョウイチ」なら、
本来の名前に「リョウイチ」を格納し、
検索用の名前に「リヨウイチ」を格納してはいかがですか?
SQLを組み立てる際に、プログラム側であらかじめ入力値を変換しておきます。
このように冗長化することにより、
・ロジックの簡素化
・データベースの検索コストの軽減
と、メリットが多いかと思います。
また、厳密に検索したい場合は、本来の名前で検索すればよいかと思います。
|
- お獅子
- 大ベテラン
- 会議室デビュー日: 2004/09/14
- 投稿数: 160
|
投稿日時: 2005-10-31 14:47
みなさんありがとうございます。
引用: |
|
じゃんぬねっとさんの書き込み (2005-10-31 13:20) より:
言語にも因りますよね。
VB であれば、StrConv 関数が使えます。
|
言語はVBではありません。Powerbilderという言語です。VBのStrConvの様な関数はありません。
引用: |
|
かつのりさんの書き込み (2005-10-31 13:46) より:
テーブルに本来の名前と検索用の名前の両方を格納するようにし、
|
これも考えたのですが、既存のデータが数万件あるので、コンバートの処理が必要となると思います。
そういった作業をやりたくないので、ロジックで対応する事にしました。
引用: |
|
夏椰【SUICA】さんの書き込み (2005-10-31 13:26) より:
めんどくさいですが、こんな感じでしか自分は思いつきませんでした。
半角版
コード: |
|
select
translate('アァイィウゥエェオォカキクケコサシスセソタチツッテトナニヌネノハヒフヘコマミムメモヤャユュヨョラリルレロワヲン',
'ァィゥェォッャュョ','アイウエオツヤユヨ' ) Ans
from dual ;
|
コード: |
|
ANS
-------------------------------------------------------
アアイイウウエエオオカキクケコサシスセソタチツツテトナニヌネノハヒフヘコマミムメモヤヤユユヨヨラリルレロワヲン
|
|
これは使えそうですv
これで試してみることにします。
みなさん、情報提供ありがとうございました。
|