посчитать символы CR в мемо-поле | |
---|---|
glaz58 Автор Сообщений: 797 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Уважаемые знатоки! В прикреплении упакованная таблица из двух полей. В memo-поле sostavrab текст, разделённый на строки символами CR-LF.
Я хочу посчитать сколько символов CR в мемо-поле с помощью следующих команд:
![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
Taran Сообщений: 13522 Откуда: Красноярск Дата регистрации: 16.01.2008 |
![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Продолжаю тестировать нейросеть
![]() /ask посчитать сколько символов CR в мемо-поле таблицы foxpro ChatGPTBot, [05.02.2023 20:25] Для подсчета символов CR в мемо-поле таблицы foxpro вы можете использовать следующий запрос SQL: SELECT LEN(memofield) - LEN(REPLACE(memofield, CHAR(13), '')) AS CR_Count FROM table_name; Этот запрос вернет количество символов CR в мемо-поле таблицы. Прежде чем использовать его, убедитесь, что он дает правильные результаты. /ask а можно использовать какую-либо функцию? ChatGPTBot, [05.02.2023 20:35] Да, вы можете использовать функцию FoxPro для подсчета символов CR в мемо-поле таблицы. Функция называется CRTOCOUNT() и принимает мемо-поле в качестве аргумента. Например, вы можете использовать следующий запрос: SELECT CRTOCOUNT(memofield) AS CR_Count FROM table_name; Этот запрос вернет количество символов CR в мемо-поле таблицы. Прежде чем использовать его, убедитесь, что он дает правильные результаты. /ask а можно без оператора select? ChatGPTBot, [05.02.2023 20:37] Да, вы можете использовать функцию FoxPro CRTOCOUNT() без оператора SELECT. Например, вы можете использовать следующую команду: CRTOCOUNT(memofield) Эта команда вернет количество символов CR в мемо-поле таблицы. Прежде чем использовать ее, убедитесь, что она дает правильные результаты. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
of63 Сообщений: 24232 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Продолжай изучать "нейросеть"... Держи нас в курсе.
Кстати, GETWORDCOUNT (строка, разделитель) , когда разделитель = CHR(13)+CHR(10) работает замечательно, и символов-разделителей можно добавлять... () hatС, [05.02.2023 20:35] Да, вы можете использовать функцию FoxPro для подсчета символов CR в мемо-поле таблицы. Функция называется CRTOCOUNT() и принимает мемо-поле в качестве аргумента. Например, вы можете использовать следующий запрос: SELECT CRTOCOUNT(memofield) AS CR_Count FROM table_name; Этот запрос вернет количество символов CR в мемо-поле таблицы. Прежде чем использовать его, убедитесь, что он дает правильные результаты. ... эта тварь, ИИ, что-то предлагает ) Исправлено 3 раз(а). Последнее : of63, 05.02.23 21:15 ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Правда, CRTOCOUNT она придумала. А вот спросить я не успел, что это такое - меня отключили на сегодня
![]() ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
akvvohinc Сообщений: 3930 Откуда: Москва Дата регистрации: 11.11.2008 |
Нет. Команда COUNT считает не символы, а записи таблицы, то есть команда COUNT FOR CHR(13) $ vs TO vcвернула вам общее количество записей в таблице, так как для всех из них выражение CHR(13) $ vs вернет одно и то же значение (которое в вашем случае оказалось истинным) Но мог получиться и ноль, если бы в текущей записи символов с кодом 13 не оказалось. Для этого необязательно предварительно "загонять" значение мемо в переменную и использовать ALLTRIM(). Эта команда выведет на экран таблицу количеств "переводов каретки" в поле sostavrab для каждой записи таблицы opisrab: SELECT shifr, sostavrab, OCCURS(0h0D, sostavrab) AS k_cr FROM opisrab А эта - общую сумму этих символов во всех записях таблицы: SELECT SUM(OCCURS(0h0D, sostavrab)) AS k_cr_total FROM opisrab ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
leonid Сообщений: 3178 Откуда: Рига Дата регистрации: 03.02.2006 |
С таким кодом порой могут возникнуть проблемы
![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Нейросеть подсказала
SELECT COUNT(*) FROM table_name WHERE field_name LIKE '%\r\n%' Небольшая модификация SELECT COUNT(*) FROM tmp WHERE f1 like '%' + CHR(13) +CHR(10) + '%' кажется работает ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
leonid Сообщений: 3178 Откуда: Рига Дата регистрации: 03.02.2006 |
Только считает не то, что нужно. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Выше приведенный пример считает правильно, правда, для варианта REPLICATE('1234',400000)
![]() ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
leonid Сообщений: 3178 Откуда: Рига Дата регистрации: 03.02.2006 |
Выше приведенный пример правильно считает, сколько строчек в таблицы имеют мемо поле, в котором есть хотя бы один перенос строки. А ТС спрашивал посчитать, сколько переносов строки в каждом мемо поле.
![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Согласен, тогда смотрим выше первый ответ ИИ
SELECT LEN(memofield) - LEN(REPLACE(memofield, CHAR(13), '')) AS CR_Count FROM table_name; Корректируем немного SELECT LEN(f1) - LEN(strtran(f1, 0h0D, '')) AS CR_Count FROM tmp Ограничение по длине строки - увы, это врожденное ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
Taran Сообщений: 13522 Откуда: Красноярск Дата регистрации: 16.01.2008 |
..не ответ на конкретный пост, а в приципе про ИИ и нейрох.ню.
Еб@нутая тема. Апологетов и продвиженцев надо сжигать в топках аги прокладки от сифозных проституток. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
akvvohinc Сообщений: 3930 Откуда: Москва Дата регистрации: 11.11.2008 |
А как бы вы объяснили этот "эффект"? Похоже, что функция по-разному работает для строк и memo-полей - очень длинные строки "берёт", а memo - нет. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Не понял столь эмоциональной реакции.
Я даже не пытался вдумываться в задачу - просто написал текст темы. Первый ответ решил поставленную задачу. Что не так? Давайте вспомним молодость и будем писать на ассемблере - языки программирования это зло. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
ABB Сообщений: 131 Откуда: Санкт-Петербург Дата регистрации: 21.10.2006 |
Я посмотрел для следующих функций:
strtran like OCCURS слишком длинная строка ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
akvvohinc Сообщений: 3930 Откуда: Москва Дата регистрации: 11.11.2008 |
Ограничений на длину строки у Фокса практически нет - только память. Но не любым способом (функцией) можно создать строку максимально возможной длины в данных условиях. Но в данном примере OCCURS() не хочет работать с memo при некоторой длине, а со строкой той же длины работать будет. Другое дело, что загнать memo такой длины в строку обычным присвоением тоже не получится. ![]() Исправлено 1 раз(а). Последнее : akvvohinc, 06.02.23 20:03 ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
Taran Сообщений: 13522 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Не принимай близко. Я бываю порой горяч. Ну это не тема для тёрок. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
leonid Сообщений: 3178 Откуда: Рига Дата регистрации: 03.02.2006 |
Функция occurs очень длинные строки берет, но когда в параметры этой функции передать мемо поле, то фокс пытается создать виртуальную переменную, и загнать в нее значение мемо поля, а затем передать эту переменную функции. Вот в этот момент и срабатывает ограничение в 16 Мb. Кстати, если написать
Вот такое странное поведение у фокса. ![]() |
Re: посчитать символы CR в мемо-поле | |
---|---|
Taran Сообщений: 13522 Откуда: Красноярск Дата регистрации: 16.01.2008 |
У ТС так и было, сначало в переменную. А 16Мб ![]() Фигасе 8000 страниц текста в одном мемо поле? Чуть ли не всего Толстого можно запихарить. ![]() |
© 2000-2023 Fox Club  |