文字列を比較し、一致不一致の確認をするならStrComp関数を使用しよう

こんにちはmasalifeです。

今回はあまり知られていないけど、とても便利なStrComp関数を紹介します。

StrComp関数を使用すると、文字列を全角/半角、大文字/小文字、ひらがな/カタカナを区別して比較することが出来ます。

それでは使い方を確認していきましょう。

StrComp関数とは?

microsoft-officeサポートでは次のように示されています。

【構文】

StrComp(string1,string2,[,compare])

*microsoft-officeサポートより引用

引数説明
string1任意の有効な文字列式
string2任意の有効な文字列式
compare文字列比較の種類を指定
*Nullの場合はエラーが発生

第3引数であるcompareでどのように文字列を比較するのかを設定します。

設定する値は次のとおりです。

【Compare引数の値】

説明
0バイナリの比較を実行
* 全角/半角、大文字/小文字、ひらがな/カタカナを区別
1テキストの比較を実行
全角/半角、大文字/小文字、ひらがな/カタカナを区別 しない
2Accessの設定に従う
defaultはテキストの比較を実行

StrComp関数の戻り値は次のとおりです。

戻り値条件
-1string1string2より小さい
0string1string2が等しい
1string1string2より大きい
Nullstring1またはstring2がNullである

原則、大きい・小さいはASCIIやJISの大小となりますが、

等しい場合は戻り値が0で、等しくなかったら0以外という事を覚えていればいいと思います。

クエリで戻り値を確認する

テーブルに次のように文字列を用意して、クエリで戻り値を確認してみましょう。

戻り値が確認しやすいように、大文字/小文字・ひらがな/カタカナが異なった文字列とします。

クエリを作成します。

クエリをデザインビューで開いて、

バイナリ型・テキスト型それぞれで比較するフィールドを作成します。


実行すると、

バイナリ型とテキスト型で戻り値が異なることが確認出来ます。

抽出条件を<>0とする事で、登録誤りで確認が必要なデータだけを抽出のような、現場で役立つ機能を作成出来るのでとても便利な関数です。

・バイナリ型の設定は全角/半角、大文字/小文字、ひらがな/カタカナを区別

・テキスト型の設定は全角/半角、大文字/小文字、ひらがな/カタカナを区別しない

・戻り値は一致するなら0、一致しないなら0以外

フォームを使った活用例

バイナリ型で大文字/小文字…を区別できるので、ログインフォームの作成にとても役立ちます。

簡易的なログインフォーム機能の作成方法を別の記事で紹介しています。

StrComp関数をVBAで使用しているので、VBAでの活用例を知りたい方もぜひ参考にしてみてください。

さいごに

現場で使用していたログインフォームを確認してみたら、IIf関数で一致不一致の確認をしてありました。

IIf関数だとテキスト型での比較となるため、ログイン機能のような全角/半角・・・の区別が必要な状況には適しません。

もし、同じような状況の方がいたら、ぜひStrComp関数を使用したものに変更してください。

少しでも安全に効率よく使用できるものにアップデートしていきましょう。

最後まで読んでいただきありがとうございました。

>ちょっとした悩みを解決        

ちょっとした悩みを解決        



「こういう内容を記事に残してほしい」「これってどうやるの」等、意見・要望があればご連絡ください。
ちょっとでもお役に立てるブログにしていきたいなと思っております。
よろしくお願いいたします。