powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Строковые функции mySQL
13 сообщений из 13, страница 1 из 1
Строковые функции mySQL
    #39130092
leperrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как можно подсчитать подсчитать количество СЛОВ в строке? не символов!(LENGTH(str), OCTET_LENGTH(str), CHAR_LENGTH(str), CHARACTER_LENGTH(str) )

Для примера тип varchar "TECT РР4 У 55"
тут
Количество слов: 4

нужен способ для их подсчета!, в строковых функциях не нашел нужного.

Помогите пожалуйста.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39130103
leperrr,


Количество слов равно количеству пробелов между словами (сделаному трезвой машинисткой :) ) + 1
Количество пробелов можно найти отняв от длины строки С пробелами, длину строки БЕЗ пробелов.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39130108
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
справка от КОКоличество слов равно количеству пробелов между словами (сделаному трезвой машинисткой :) ) + 1Спорное утверждение. По этому алгоритму в строке "Миру - мир" три слова.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39130116
leperrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleсправка от КОКоличество слов равно количеству пробелов между словами (сделаному трезвой машинисткой :) ) + 1Спорное утверждение. По этому алгоритму в строке "Миру - мир" три слова.

Да по сути каждый отдельный символ считается за 1 слово.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39130118
vkleсправка от КОКоличество слов равно количеству пробелов между словами (сделаному трезвой машинисткой :) ) + 1Спорное утверждение. По этому алгоритму в строке "Миру - мир" три слова.Нуу, знаете ... :)
"55", в сабжевом посте ТС - тоже, так се на слово "канает"
Но он-то, его "словом" - щетаить !
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39130126
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leperrrКак можно подсчитать подсчитать количество СЛОВ в строке?
Для этого нужно сперва строго определить, что есть слово.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39135732
leperrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Способ для подсчета слов в строке!
1. Создать табличку
Код: sql
1.
2.
3.
CREATE TABLE products2
SELECT products1.id, products1.pro_title, products1.pro_title AS pro_title20, products1.pro_cat_id,
FROM products1;



где products1.pro_title наша строка для подсчета слов, а products1.pro_title AS pro_title20 пака просто клон.

2. удалить пробелы (и заменяем символами на пробелы), ('-', '%', '^', ']', ' ', ' ', ..... и так далее) из нашего клона pro_title20 с помощью REPLACE
Код: sql
1.
UPDATE `products2` SET `pro_title20`=REPLACE(`pro_title20`, ' ','');



3. Вывести сколько слов в строке
для этого нужно, при помощи функции CHARACTER_LENGTH вывести количество символов с колонок pro_title и pro_title20(безпробелов) как мне советовали выше .... И отнять pro_title - pro_title20 = наше количество слов.

так то так одним запросом
Код: sql
1.
2.
3.
4.
SELECT id, pro_title, MAX(CHARACTER_LENGTH(pro_title) - CHARACTER_LENGTH(pro_title20)) AS WorD
FROM `products2`
GROUP BY id
ORDER BY WorD DESC;



а и соответственно если результат WorD = 17 то это 18 слов в строке)

ну или добавить сразу +1
Код: sql
1.
2.
3.
4.
SELECT id, pro_title, MAX(CHARACTER_LENGTH(pro_title) - CHARACTER_LENGTH(pro_title20)+1) AS WorD
FROM `products2`
GROUP BY id
ORDER BY WorD DESC


____________________________________________________________________________________________________

Еще была идея перевести де каждый символ в N_OR_S преобразован в 2 шестнадцатеричных цифры. С функции HEX
SELECT id, pro_title, HEX(pro_title)
где по сути REPLACE не нужен

для примера
Код: sql
1.
SELECT HEX('TECT РР4 У 55');


-> 5445435420D0A0D0A03420D0A3203535;

где 20 всегда означат пробел! тут их 3)

или же
Код: sql
1.
SELECT HEX('TECT-РР4 У 55');


-> 544543542DD0A0D0A03420D0A3203535
2D это '-' ну и так далее

как этим воспользоватся я еще не придумал.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39135764
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leperrrгде 20 всегда означат пробел!Не факт. В строке '620D' пробела нет, а '20 есть'.

Кроме того, существуют и другие символы, которые могут разделять слова.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39135783
leperrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftleperrrгде 20 всегда означат пробел!Не факт. В строке '620D' пробела нет, а '20 есть'.

Кроме того, существуют и другие символы, которые могут разделять слова.

в какой строке вы взяли 620D ?
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39135793
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leperrrmiksoftпропущено...
Не факт. В строке '620D' пробела нет, а '20 есть'.

Кроме того, существуют и другие символы, которые могут разделять слова.

в какой строке вы взяли 620D ?Ни в какой. Это просто пример того, что цифра 2 может быть второй в коде одного символа, а цифра 0 может быть первой в коде следующего символа. Т.е. комбинация '20' не всегда означает пробел.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39136005
leperrr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftleperrrпропущено...


в какой строке вы взяли 620D ?Ни в какой. Это просто пример того, что цифра 2 может быть второй в коде одного символа, а цифра 0 может быть первой в коде следующего символа. Т.е. комбинация '20' не всегда означает пробел.

НУ не знаю я протестировал на отрывках книг Э.М Ремарка.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
SELECT HEX('Что было потом? Что было в последующие годы? Я отложил карандаш. Не имело смысла вспоминать дальше. Я уже и не помнил всего достаточно точно. Слишком всё перепуталось. В последний раз я праздновал день моего рождения в кафе «Интернациональ». Там я целый год работал тапером. Потом опять встретил Кестера и Ленца. И вот теперь я здесь, в «Аврема» — в авторемонтной мастерской Кестера и Књ. Под «и Књ» подразумевались Ленц и я, хотя мастерская по существу принадлежала только Кестеру. Он был нашим школьным товарищем, потом командиром нашей роты. Позже он стал летчиком, некоторое время был студентом, затем гонщиком и, наконец, купил эту лавочку. Сперва к нему присоединился Ленц, который до этого несколько лет шатался по Южной Америке, а потом и я.

Я вытащил из кармана сигарету. Собственно говоря, я мог быть вполне доволен. Жилось мне неплохо, я имел работу, был силен, вынослив и, как говорится, находился в добром здравии; но всё же лучше было не раздумывать слишком много. Особенно наедине с собой. И по вечерам. Не то внезапно возникало прошлое и таращило мертвые глаза. Но для таких случаев существовала водка.

* * *

Заскрипели ворота. Я разорвал листок с датами своей жизни и бросил его под стол в корзинку. Дверь распахнулась. На пороге стоял Готтфрид Ленц, худой, высокий, с копной волос цвета соломы и носом, который, вероятно, предназначался для совершенно другого человека. Следом за ним вошел Кестер. Ленц встал передо мной;

— Робби! — заорал он. — Старый обжора! Встать и стоять как полагается! Твои начальники желают говорить с тобой!

— Господи боже мой, — я поднялся. — А я надеялся, что вы не вспомните… Сжальтесь надо мной, ребята!

— Ишь чего захотел! — Готтфрид положил на стол пакет, в котором что-то звякнуло.

— Робби! Кто первым повстречался тебе сегодня утром? Я стал вспоминать…

— Танцующая старуха!

— Святой Моисей! Какое дурное предзнаменование! Но оно подходит к твоему гороскопу. Я вчера его составил. Ты родился под знаком Стрельца и, следовательно, непостоянен, колеблешься как тростник на ветру, на тебя воздействуют какие-то подозрительные листригоны Сатурна, а в атом году еще и Юпитер. И поскольку Отто и я заменяем тебе отца и мать, я вручаю тебе для начала некое средство защиты. Прими этот амулет! Правнучка инков однажды подарила мне его. У нее была голубая кровь, плоскостопие, вши и дар предвидения. «Белокожий чужестранец, — сказала она мне. — Его носили цари, в нем заключены силы Солнца, Луны и Земли, не говоря уже о прочих мелких планетах. Дай серебряный доллар на водку и можешь носить его». Чтобы не прерывалась эстафета счастья, передаю амулет тебе. Он будет охранять тебя и обратит в бегство враждебного Юпитера, — Ленц повесил мне на шею маленькую черную фигурку на тонкой цепочке. — Так! Это против несчастий, грозящих свыше. А против повседневных бед — вот подарок Отто! Шесть бутылок рома, который вдвое старше тебя самого!

Развернув пакет, Ленц поставил бутылки одну за другой на стол, освещенный утренним солнцем. Они отливали янтарем.

— Чудесное зрелище, — сказал я. — Где ты их раздобыл, Отто?

Кестер засмеялся:

— Это была хитрая штука. Долго рассказывать. Но лучше скажи, как ты себя чувствуешь? Как тридцатилетний?

Я отмахнулся:

— Так, будто мне шестнадцать и пятьдесят лет одновременно. Ничего особенного.

— И это ты называешь «ничего особенного»? — возразил Ленц. — Да ведь лучшего не может быть. Это значит, что ты властно покорил время и проживешь две жизни.

Кестер поглядел на меня.

— Оставь его, Готтфрид, — сказал он. — Дни рождения тягостно отражаются на душевном состоянии. Особенно с утра. Он еще отойдет.

Ленц прищурился:

— Чем меньше человек заботится о своем душевном состоянии, тем большего он стоит, Робби. Это тебя хоть немного утешает?

— Нет, — сказал я, — совсем не утешает. Если человек чего-то стоит, — он уже только памятник самому себе. А по-моему, это утомительно и скучно.

— Отто, послушай, он философствует, — сказал Ленц, — и значит, уже спасен. Роковая минута прошла! Та роковая минута дня рождения, когда сам себе пристально смотришь в глаза и замечаешь, какой ты жалкий цыпленок. Теперь можно спокойно приниматься за работу и смазать потроха старому кадилляку…

* * *

Мы работали до сумерек. Потом умылись и переоделись. Ленц жадно поглядел на шеренгу бутылок:

— А не свернуть ли нам шею одной из них?

— Пусть решает Робби, — сказал Кестер. — Это просто неприлично, Готтфрид, делать такие неуклюжие намеки тому, кто получил подарок.

— Еще неприличнее заставлять умирать от жажды подаривших, — возразил Ленц и откупорил бутылку. Аромат растекся по всей мастерской.

— Святой Моисей! — сказал Готтфрид. Мы стали принюхиваться.

— Отто, аромат сказочный. Нужно обратиться к самой высокой поэзии, чтобы найти достойное сравнение.

— Да, такой ром слишком хорош для нашего мрачного сарая! — решил Ленц. — Знаете что? Поедем за город, поужинаем где-нибудь и прихватим бутылку с собой. Там, на лоне природы, мы ее и выдуем.

— Блестяще.

Мы откатили в сторону кадилляк, с которым возились весь день. За ним стоял очень странный предмет на четырех колесах. Это была гоночная машина Отто Кестера — гордость нашей мастерской.

Однажды на аукционе Кестер купил по дешевке старую колымагу с высоким кузовом. Присутствовавшие специалисты не колеблясь заявили, что это занятный экспонат для музея истории транспорта. Больвис — владелец фабрики дамских пальто и гонщик-любитель — посоветовал Отто переделать свое приобретение в швейную машину. Но Кестер не обращал ни на кого внимания. Он разобрал машину, как карманные часы, и несколько месяцев подряд возился с ней, оставаясь иногда в мастерской до глубокой ночи. И вот однажды он появился в своем автомобиле перед баром, в котором мы обычно сидели по вечерам. Больвис едва не свалился от хохота, так уморительно всё это выглядело. Шутки ради он предложил Отто пари. Он ставил двести марок против двадцати, если Кестер захочет состязаться с его новой гоночной машиной: дистанция десять километров и один километр форы для машины Отто. Они ударили по рукам. Вокруг смеялись, предвкушая знатную потеху. Но Отто пошел дальше: он отказался от форы и с невозмутимым видом предложил повысить ставку до тысячи марок против тысячи. Изумленный Больвис спросил, не отвезти ли его в психиатрическую лечебницу. Вместо ответа Кестер запустил мотор. Оба стартовали немедленно. Больвис вернулся через полчаса и был так потрясен, словно увидел морского змея. Он молча выписал чек, а затем стал выписывать второй. Он хотел тут же приобрести машину.

Кестер высмеял его. Теперь он не продаст ее ни за какие деньги. Но как ни великолепны были скрытые свойства машины, внешний вид ее был страшен. Для повседневного обихода мы поставили самый старомодный кузов, старомодней нельзя было сыскать. Лак потускнел. На крыльях были трещины, а верх прослужил, пожалуй, не меньше десятка лет. Разумеется, мы могли бы отделать машину значительно лучше, но у нас были основания поступить именно так.')



ПОКАЗАТЕЛЬ ЗНАЧЕНИЕ
Количество символов: 6921
Количество символов без пробелов: 5797
Количество слов: 1057
Запятых: 93
Пробелов: 1056
Абзацев: 69


Пробелов: 1056 как и 20 одно количество.
____________________________________________________________________________________________

Я все же покопаюсь в литературе по обработке шестнадцатеричных данных.
И отпишусь!
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39136027
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leperrrЯ все же покопаюсь в литературе по обработке шестнадцатеричных данных.А зачем это нужно в данной задаче?
Напишите свою функцию с циклом по символам и подсчетом слов.
...
Рейтинг: 0 / 0
Строковые функции mySQL
    #39136702
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leperrrНУ не знаю я протестировал на отрывках книг Э.М Ремарка.[Любой символ, код которого оканчивается на 2]+[перевод строки] даст "X20D" или "X20A", в зависимости от вида конца строк. Например,
Код: sql
1.
select hex('в\nа') as zxc

выдаст
Код: plaintext
D0B20AD0B0

Вам просто повезло, что перед всеми абзацами у вас точки стоят.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Строковые функции mySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]