Механизм базы данных Access обычно определяет уникальность данных текста ('String'), используя только первые 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) или некоторые другие подходящим образом выбранное значение для длины поля .
Ну, в моем тестировании это вообще не работает. Быстрый репрография:
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);
испытано с помощью представления SQL о наличии Access2007 .accdb ACE объекта двигателя запрос в режиме SQL-92 запросов, то запрос возвращает одну строку (неправильный), значение которого было усечен в 255 символов (неправильное).
Ранее запрос «chunking» возвращает две строки (правильные) без усечения (правильно).
Трей Хуннер, спасибо за ваше решение. Он работал, когда я запускаю его как есть, как запрос. Но когда я вставляю коды в свой предопределенный отчет, он возвращает следующую ошибку/предупреждение «Вы пытались выполнить запрос, который не включает конкретное выражение« xxxx »как часть агрегатной функции». Я прочитал на другом форуме, что это вызвано оператором GROUP BY. Я обнаружил обход этой ошибки/предупреждения, то есть - после создания запроса используйте кнопку «Создать отчет» на ленте доступа. Он будет генерировать правильные результаты без ошибки/предупреждения. –