Microsoft Access 掲示板

長音記号を置換したい / 1

9 コメント
views
4 フォロー
1
すずやん 2024/02/20 (火) 11:15:57

以前も同じような質問がありましたが、プログラムでは「zawaーzawa」→変換対象、「トーキョー」→問題ないので変換しない、という判断が難しいと思います。

「半角文字に囲まれている場合は変換対象」等では判断できるかもしれませんが、そういった複雑な判断はクエリにあまり向きません。

通報 ...
  • 2
    Anonymous 2024/02/20 (火) 11:29:07 23e8e@44ebd >> 1

    なるほどです。
    であれば、前後がアルファベット(大文字・小文字問わず)だけであれば抽出は可能でしょうか?

    4
    すずやん 2024/02/20 (火) 13:56:40 >> 2

    その場合も「前後がアルファベットに挟まれた「ー」の場合は置換する」という判断をクエリで行うのがとても難しいと思います。
    不可能では無いかもしれませんが、クエリにこだわらないほうが良いかと。

    mayuさんが下記に例を記載されていますが、このようなVBAを使用する方法が良いのではないかと思います。

    6
    Anonymous 2024/02/20 (火) 17:57:48 23e8e@44ebd >> 2

    アルファベットに囲まれた"ー"を含むレコードを抽出するだけであれば可能でしょうか?という意味です!
    抽出したレコードのどの"ー"を置換するかは、フォームか選択クエリ上で目視・手動で行おうと思います。

    ですので抽出条件のみ書き方が分かればOKかなと思います。

    7

    ですので抽出条件のみ書き方が分かればOKかなと思います。

     
    Access-SQLの構文で抽出条件を記述するなら

    SELECT * FROM テーブル名
    WHERE フィールド名 Like '*[a-z]ー[a-z]*'
    ;
    

    になります

    ただし、Access-SQLには以下のような問題があるようなので

    長音「ー」を含むデータをクエリであいまい抽出すると
    クエリでLike演算子を使用してあいまい抽出すると合致しないデータが抽出されてしまうというバグがあります。それを知らないと想定外の結果になりあわせるということになりますので注意が必要です。 また、それに対する対応策も紹介します。 難易度:...
    Fc2

    参照先のコンテンツに掲載されているラッパー関数を用いて
    以下のように記述すればいいでしょう

    SELECT * FROM テーブル名
    WHERE ILike(フィールド名, '*[a-z]ー[a-z]*')
    ;
    
    8
    すずやん 2024/02/21 (水) 08:33:35 >> 2

    そういう引当ての方法は知りませんでした。参考になります!

    9
    Anonymous 2024/02/21 (水) 09:31:28 23e8e@44ebd >> 2

    お二人ともありがとうございます!