8

大文字と小文字を区別する MS Access の Select Query を知りたいです。

以下のように、VitualMonitorName には 2 つの値があります。

VCode VirtualMonitorName
Row 1 (1, 'VM1');
Row 2 (2, 'Vm1');

ここでは、両方の値が異なります。

私が書いたら

"SELECT VCode FROM VirtualMaster WHERE VirtualMonitorName like '" + Vm1 + "'";

VCode = 1 のみを返信します。

4

5 に答える 5

14

大文字と小文字を区別して比較するには、StrComp()with 関数を使用できます。vbBinaryCompare以下は、イミディエイト ウィンドウの例で、どのように機能するかを示してStrComp()います。詳細については、アクセスのヘルプ トピックを参照してください。

? StrComp("a", "A", vbBinaryCompare)
 1 

? StrComp("a", "A",vbTextCompare)
0

StrComp()最初の 2 つの引数が等しいと評価される場合は 0 を返し、等しくない場合は 1 または -1 を返し、いずれかの引数が Null の場合は Null を返します。

クエリで関数を使用するにはvbBinaryCompare、名前ではなく定数の値 (0) を指定します。

SELECT VCode
FROM VirtualMaster
WHERE StrComp(VirtualMonitorName, "Vm1", 0) = 0;

このアプローチは、新しい Access データベース エンジン ("ACE") ドライバーを使用している場合、他のアプリケーションからのクエリにも利用できます。たとえば、次の C# コード

string myConnectionString =
        @"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
        @"Dbq=C:\Users\Public\Database1.accdb;";
using (OdbcConnection con = new OdbcConnection(myConnectionString))
{
    con.Open();
    using (var cmd = new OdbcCommand())
    {
        cmd.Connection = con;
        cmd.CommandText = 
                "SELECT COUNT(*) AS n FROM [VirtualMaster] " +
                "WHERE StrComp([VirtualMonitorName],?,?) = 0";
        cmd.Parameters.AddWithValue("?", "Vm1");
        cmd.Parameters.Add("?", OdbcType.Int);

        var vbCompareOptions = new Dictionary<string, int>() 
        {
            {"vbBinaryCompare", 0},
            {"vbTextCompare", 1}
        };
        string currentOption = "";

        currentOption = "vbBinaryCompare";
        cmd.Parameters[1].Value = vbCompareOptions[currentOption];
        Console.WriteLine(
                "{0} found {1} record(s)", 
                currentOption, 
                Convert.ToInt32(cmd.ExecuteScalar()));

        currentOption = "vbTextCompare";
        cmd.Parameters[1].Value = vbCompareOptions[currentOption];
        Console.WriteLine(
                "{0} found {1} record(s)",
                currentOption,
                Convert.ToInt32(cmd.ExecuteScalar()));
    }
}

生産する

vbBinaryCompare found 1 record(s)
vbTextCompare found 2 record(s)
于 2012-04-06T18:06:29.627 に答える
2

これをチェックしてください:

https://support.microsoft.com/kb/244693?wa=wsignin1.0

この記事では、Microsoft Jet データベース エンジンを使用して大文字と小文字を区別する JOIN を実現する 4 つの方法について説明します。これらの方法にはそれぞれ長所と短所があり、実装を選択する前に比較検討する必要があります。メソッドは次のとおりです。

  • StrComp
  • 大文字と小文字を区別する IISAM ドライバー
  • 16 進展開
  • バイナリ フィールド
于 2014-12-14T07:30:06.017 に答える
0

より単純なレベルのコーディングで使用します。

DCOUNT 操作の条件として、正しいケースを持つ必要があるフィールド (列) をチェックし、空白の州/地域を無視します。

      '  lngcounter will count the all States 
      ' or Territories Field ( Column) with this 
      ' exact case value of 'Ohio'. ([ID] is an Autonumber ID field)

      lngCounter = DCount("[id]", Trim(Me!tboDwellingTablename), "[State/territory],'Ohio',0) = 0")
于 2017-08-24T06:46:49.113 に答える
0

これは1文字だけを行います:

MS アクセス SQL:

SELECT Asc(Left([Title],1)) AS t FROM Master WHERE (((Asc(Left([Title],1)))=105));

Title検索したいフィールドです

MasterTitleフィールドが配置されているテーブルです

105文字のアスキー コード..

この場合、i not I で始まるタイトルのみ

小文字の「a」を検索する場合は、105 を 97 に変更します。

于 2019-01-06T00:20:14.013 に答える