MS Accessデータベースでは、2つのテーブル(EmployeeとEmployee_PROD)間の不一致(差異)レコードを見つけるために、UNION ALLを使用しています。次のようにクエリは次のとおりです。MS Accessで大文字と小文字を区別するグループを実行する方法
SELECT [COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY] FROM
(SELECT '[Employee]' AS TableName,[COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY] FROM [Employee]
UNION ALL
SELECT '[Employee_PROD]' AS TableName,[COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY] FROM [Employee_PROD])
GROUP BY [COMPANY],[DEPT],[DOJ],[EMP_ID],[Name],[SUB_COMPANY]
HAVING COUNT(*) = 1 AND MIN(TableName) = '[Employee]'
私が直面しています問題はGROUP BY
は、大文字と小文字の区別を考慮していないことです。たとえば、 "andrew"と "Andrew"は同じものとして扱われます。大文字と小文字を区別してグループを実行して差分レコードを探したい。
MS Accessでこれを行う方法はありますか?
同じ列名、データ型、およびレコード数を持つ2つのテーブルの違いが7,00,000かどうかを調べる方法はありますか? DataTable
へ
- データをロードして、違いを見つける:
は、私は次のことを試してみました。膨大な量のデータが原因でメモリ不足例外が発生しました。
NOT EXISTS
を使用して行を比較します。クエリがハングアップし、実行が完了しませんでした。UNION ALL
のアプローチが有効ですが、問題はGROUP BY
で大文字と小文字の区別が考慮されていないことです。
C#またはアクセス?? – Gustav
私はMS AccessデータベースでC#OleDbConnection経由でクエリを実行しています。 –
もしそうなら、私はアクセスでVBA関数を呼び出すことはできません。しかし、あなたが気にしているものなら、最初の文字のASCII値を選ぶことができます。後続の文字の場合は、MIDを使用して拡張することができます。 – Gustav