tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル文字列変換
記事No13387
投稿日: 2009/02/02(Mon) 02:32
投稿者ドラえもん
ある文字列でAND OR BETWEEN LIKE 以外の文字を'で囲む方法を調べています。

例えば
のびた AND すねお
なら
'のびた' AND 'すねお'

BETWEEN 2001/01/01 AND 2002/01/01
なら
BETWEEN '2001/01/01' AND '2002/01/01'

LIKE ドラ*
なら
LIKE 'ドラ*'

見たいな感じです。

INSTRやMIDだけでもできそうな気もしますが、すごい大変です。
もっと簡単な方法を知っている方いらっしゃいましたら教えていただけないでしょうか。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: 文字列変換
記事No13388
投稿日: 2009/02/02(Mon) 09:14
投稿者
> ある文字列でAND OR BETWEEN LIKE 以外の文字を'で囲む方法を調べています。

半角スペース「 」を「' '」に置き換えて
'AND'、'OR'、'BETWEEN'、'LIKE'それぞれをAND、OR、BETWEEN、LIKEに置換え。
あとは文字列の最初と最後に「'」を付けてあげればできるかな?

※対象外文字列に「WHERE」が無いので、条件のみの文字列と判断しました。
 半角スペースが2個以上続いている場合は「''」を長さ0の文字列に置き換えてあげればOKでしょう。

[ツリー表示へ]
タイトルRe^2: 文字列変換
記事No13389
投稿日: 2009/02/02(Mon) 10:43
投稿者ダンボ
琴さんの順番だと
 LIKE ドラ*
の場合がうまく行かないですね。

@連続半角スペースは1個の半角スペースにすべて変換する
A半角スペース「 」を「' '」にすべて置き換える
B文字列の最初と最後に「'」を付ける
C'AND'、'OR'、'BETWEEN'、'LIKE'それぞれをAND、OR、BETWEEN、LIKEに置換える

先頭や最後に半角スペースがあったら、これでも駄目ですけど。
あ、それも仮定するなら、@の前に、あるいは@とAのあいだに
@’Trim()で文字列の最初と最後の半角スペースを取り除く
でOKか。

[ツリー表示へ]
タイトルRe: 文字列変換
記事No13390
投稿日: 2009/02/02(Mon) 12:26
投稿者花ちゃん
Split関数 と Join関数を使って下記のような感じにした方が簡単かな

Option Explicit

Private Sub Command1_Click()
   Debug.Print MySqlJoin("BETWEEN 2001/01/01 AND 2002/01/01")
End Sub

Private Function MySqlJoin(ByVal myString As String) As String
   Dim AddDat As Variant
   Dim i      As Long
   AddDat = Split(myString, " ")
   For i = LBound(AddDat) To UBound(AddDat)
      If AddDat(i) = "AND" Or AddDat(i) = "OR" Or _
                              AddDat(i) = "BETWEEN" Or AddDat(i) = "LIKE" Then
      Else
         AddDat(i) = "'" & AddDat(i) & "'"
      End If
   Next i
   MySqlJoin = Join(AddDat, " ")
End Function
後は、追加条件やエラー処理等を付け足して下さい。

[ツリー表示へ]
タイトルRe^2: 文字列変換
記事No13402
投稿日: 2009/02/03(Tue) 04:32
投稿者ドラえもん
みなさんご返答ありがとうございます。
無事解決しました!
本当にありがとうございました。

[ツリー表示へ]
タイトル解決したのなら...。
記事No13403
投稿日: 2009/02/03(Tue) 08:41
投稿者花ちゃん
> みなさんご返答ありがとうございます。
> 無事解決しました!
> 本当にありがとうございました。

(4) 解決した場合の報告は、どのようにして解決したかを必ず報告して下さい。
よく、試してみます、ありがとうございました。 参考にさせて頂きます。 といった書き込みをされますが、貴方の為にだけに回答された訳ではありません。同様の疑問をお持ちの方を含めた人への回答です。

【掲示板ご利用に際し】 より抜粋

[ツリー表示へ]