Как получить из поля уникальный список символов?04.07.2024, 15:15. Показов 746. Ответов 15
Приветствую!
Собственно, всё содержится в названии темы) Нужно максимально быстро (без цикла по символам каждой строки поля) получить уникальный список символов. Желательно, результат получить в поле временной таблицы: одна строка = один символ. То есть, если в поле исходной таблицы всего 2 строки: Маша и Вася, то на выходе нужно получить временную таблицу с одним полем и 6ю строками: М, а, ш, В, с, я. Регистр имеет значение: символы Д и д являются разными (бинарный калейт). Возможно, имеет смысл свести к задачу только к получению символов из строки быстрее, чем в цикле по символам. Строки поля можно сцепить в одну огромную строку (насколько огромную, опять же), символы из неё поместить в новую таблицу и потом сгруппировать это поле. Можно вместе с символами помещать их юникоды — группировка по интам должны быть намного быстрее.
0
|
|
| 04.07.2024, 15:15 | |
|
Ответы с готовыми решениями:
15
Как отредактировать список допустимых символов поля username при регистрации??? 2 уникальный поля ? или как это сделать?
|
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
|
| 04.07.2024, 15:23 | |
|
Написать аналог string_split умеющий разбивать строку посимвольно, а дальше дело техники )
0
|
|
|
42 / 34 / 9
Регистрация: 12.06.2024
Сообщений: 168
|
||||||
| 04.07.2024, 15:39 | ||||||
1
|
||||||
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,089
|
||||||
| 04.07.2024, 15:53 | ||||||
1
|
||||||
| 04.07.2024, 16:00 [ТС] | |
|
Дядя Виля, uaggster, благодарю, господа!
Отпишусь по тестам скорости... Аватар, если не брать интеграцию сторонних языков, то я только циклом такое себе представляю.
0
|
|
|
42 / 34 / 9
Регистрация: 12.06.2024
Сообщений: 168
|
|||||||||||
| 04.07.2024, 16:05 | |||||||||||
|
uaggster прав... проверил на другом сервере, collate желателен...
0
|
|||||||||||
| 04.07.2024, 16:10 [ТС] | |
|
uaggster, а кросс n as c точно нужен? Вроде, не участвует...
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,089
|
||||||||||||
| 04.07.2024, 16:17 | ||||||||||||
|
Если буквы, например, только русские, можно так:
Ну, точнее нужно от 0 до 254, где 254 - это длина txt. Эту последовательность можете генерировать как угодно. Может у вас 22 и там вообще generate_series есть.
1
|
||||||||||||
| 04.07.2024, 16:33 [ТС] | |
|
uaggster, нужен метод, работающий в полном диапазоне: от 1 до 65 535 кода. Что нужно для этого изменить?
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,089
|
||||||
| 04.07.2024, 16:50 | ||||||
Сообщение было отмечено Jack Famous как решение
Решение
Но, думаю, в этом случае, первый вариант - лучше.
2
|
||||||
| 04.07.2024, 16:51 [ТС] | |
|
uaggster, большое спасибо!
Забыл ваш трюк со сплитом) А почему Bin2, а не Bin?
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,089
|
||
| 04.07.2024, 17:01 | ||
|
В других - лучше завести табличку, строк на 1000. Есть master..spt_values, но лучше свою такую. BIN2 и BIN: https://sql-ex.ru/blogs/?/Razn... _BIN2.html
1
|
||
| 04.07.2024, 17:02 [ТС] | |
|
uaggster, большое спасибо!
0
|
|
| 05.07.2024, 10:08 [ТС] | ||||||
|
Приветствую!
Результаты тестов: с огромным отрывом и вне конкуренции — вариант из #4 от uaggster. Дядя Виля, благодарю за альтернативные варианты. Таблица dbo.sku_Sym содержит 2 поля: номер символа по юникоду и сам символ. 1 - 65 535. Таблица #bad содержит поле text (но не только) с нужными нам строками. Имеет 29 734 строки. Список символов из них: 806 591. Уникальный список: 216.
Уникальный список увеличился несильно: 236 символов. Если дистинкт убрать, то время работы (внезапно) увеличивается до 4ёх минут и список символов растёт до 636 млн строк. Ну и да — можно отфильтровать таблицу символов (для получения номеров символов для каждой строки) по максимальной длине строки в поле. И помним, что Len() не учитывает хвостовые пробелы, а DataLength() будут считать байты для NVarChar.
0
|
||||||
|
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
|
|
| 05.07.2024, 10:13 | |
|
А зачем их считаь если не секрет? Считать распределение каждого символа понятно, а список встречавшихся звчем?
0
|
|
| 05.07.2024, 10:55 [ТС] | |
|
Аватар, не считать, а смотреть)
Есть строки с "плохими" символами, отбираемые по маске типа Like '%[^список допустимых]%'. Нужно посмотреть, какие именно это символы.
0
|
|
| 05.07.2024, 10:55 | |
|
Помогаю со студенческими работами здесь
16
Как связать между собой два поля (список значений одного поля зависит от значения другого поля) Не обнаружен уникальный индекс для адресуемого поля главной таблицы, хотя стоят ключевые поля
Как получить уникальный код машины Как получить уникальный номер браузера? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|