通常、Accessデータベースエンジンはテキスト( '文字列')データの一意性を最初の255文字のみを使用するため、DISTINCT
とGROUP BY
が切り捨てられます。
この提案は少し長めですが、うまくいきます。MEMO
を255文字のチャンクに分割し、チャンクにDISTINCT
を使用して、再び一緒に連結します。 (サブクエリのためのAccessデータベースエンジンANSI-92クエリモードの構文すなわち括弧):コメントが投稿された
SELECT DT2.MyMemoCol_1 & DT2.MyMemoCol_2 AS MyMemoCol
FROM (
SELECT DISTINCT DT1.MyMemoCol_1, DT1.MyMemoCol_2
FROM (
SELECT MID(MyMemoCol, 1, 255) AS MyMemoCol_1,
MID(MyMemoCol, 256, 255) AS MyMemoCol_2
FROM Test1
) AS DT1
) AS DT2;
:
が 255文字のチャンクにしてダウンメモを速報です全部 は不要です。 Left(MyMemoCol、8192)またはその他の フィールドの長さを適切に選択して、 フィールドを並べ替えるだけで簡単に並べ替えることができます。
私のテストでは、これはまったく機能しません。クイックREPRO:SQL-92クエリモードでAccess2007の.accdb ACEエンジンクエリオブジェクトのSQLビューを使用して試験
CREATE TABLE Test1 (MyMemoCol MEMO NOT NULL);
INSERT INTO Test1 (MyMemoCol) VALUES (STRING(300, 'A'));
INSERT INTO Test1 (MyMemoCol) VALUES (STRING(300, 'A') & STRING(5, 'X'));
INSERT INTO Test1 (MyMemoCol) VALUES (STRING(300, 'A'));
SELECT LEFT$(MyMemoCol, 8192)
FROM Test1
GROUP
BY LEFT$(MyMemoCol, 8192);
、クエリが(誤った)値が255文字(誤っで切断された単一の行を返します)。
以前の 'チャンク'クエリは、2つの行を返します(正しい)切り捨てなし(正しい)。
Trey Hunner、あなたのソリューションに感謝します。私はそれをそのままクエリとして実行しました。しかし、私が定義済みのレポートにコードを貼り付けると、次のエラー/警告が表示されます。 "集計関数の一部として特定の式 'xxxx'を含まないクエリを実行しようとしました。私はそれがGROUP BYステートメントによって引き起こされた別のフォーラムを読みました。 このエラー/警告の回避策を見つけました。つまり、クエリを作成した後、アクセスリボンの[作成]> [レポート]ボタンを使用します。エラー/警告なしで正しい結果が生成されます。 –