|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Добрый день, друзья. Помогите пожалуйста сделать несколько задачек. Таблица address_location 1. Найти адреса где нет никаких значений, пробел не учитываем и пустые строки с NULL не учитываем. 2. Таблица phone_number Найти клиентов, с типом телефона "мобильный", у которых в номере меньше 10 цифр В номере нужно пропускать скобки, пробелы Создание таблицы phone_number: CREATE TABLE phone_number( id integer, mobile_phone varchar2(20), city_phone varchar2(20), fax_number varchar2(20) ); Создание таблицы address_location: CREATE TABLE address_location( id integer, address varchar2(50) ); Входные значения: Таблица phone_number INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (1, '8(929)100-10-10', '8495100-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (2, '8(930)200-20-20', '8495200-20-20', '8495200-20-20'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (3, '8(931)300-30-10', '8495300-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (4, '8(932)400-40-10', '8495400-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (5, '8(933)500-50-10', '8495500-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (6, '8(934)600-60-10', '8495600-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (7, '8(935)700-70-10', '8495700-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (8, '8(936)800-80-', '8495800-10-10', '8495100-10-10'); INSERT INTO phones (id, mobile_phone, city_phone, fax_number) VALUES (9, '8(937)900-10-9009', '8495900-10-10', '8495100-10-10'); Таблица address_location INSERT INTO location (id, address) VALUES (1, ''); INSERT INTO location (id, address) VALUES (2, 'ul. Spasskaya, d.88, k.1'); INSERT INTO location (id, address) VALUES (3, 'ul. Begovaya, d.121'); INSERT INTO location (id, address) VALUES (4, 'ul. Klati-Tsetkina, d.4'); INSERT INTO location (id, address) VALUES (5, 'ul. Dementeva, d.31'); INSERT INTO location (id, address) VALUES (6,NULL); INSERT INTO location (id, address) VALUES (7,'per. Volokolamskiy, dom. 124'); INSERT INTO location (id, address) VALUES (8,'ul. Pastirnaka'); INSERT INTO location (id, address) VALUES (9,'per. Dvigateley , dom. 1'); ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2020, 23:28 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Пустые строки, они же NULL, исключаем: Код: plsql 1. 2.
где нет никаких значений Тут, возможно, надо уточнить задачу. Translate никогда не использовал, наверное, можно изящнее. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 07:05 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
dmdmdm, Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 07:44 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
dmdmdm, 123йй, select * from address_location where address is not null; - НЕ NULL или NULL, где пробелы тоже считаются пустыми строками со вторым запросом вообще не так...я имею ввиду он не запускается. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 08:49 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Anton Polikarpov, 1. trim() 2. лог давай, что как маленький ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 08:51 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Anton Polikarpov, Название таблиц одно, а в инсерт - другое... Определись уж... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 08:59 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
xtender, Приветствую. Спасибо что заметили. Исправил. Таблица address_location INSERT INTO address_location(id, address) VALUES (1, ''); INSERT INTO address_location(id, address) VALUES (2, 'ul. Spasskaya, d.88, k.1'); INSERT INTO address_location(id, address) VALUES (3, 'ul. Begovaya, d.121'); INSERT INTO address_location (id, address) VALUES (4, 'ul. Klati-Tsetkina, d.4'); INSERT INTO address_location(id, address) VALUES (5, 'ul. Dementeva, d.31'); INSERT INTO address_location(id, address) VALUES (6,NULL); INSERT INTO address_location(id, address) VALUES (7,'per. Volokolamskiy, dom. 124'); INSERT INTO address_location (id, address) VALUES (8,'ul. Pastirnaka'); INSERT INTO address_location (id, address) VALUES (9,'per. Dvigateley , dom. 1'); ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:08 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
oragraf, Приветствую :) Да, мне друг тоже самое говорил, что в первом задании про адреса, используется trim. Но что-то допереть не можем, как именно он тут используется. Я читал про него, получается что он удаляет с начала и с конца строки пробелы, или сначала и с конца одновременно. Пробел не учитываем, имелось ввиду, что надо вывести те значения где если есть пробел, null, или нет никаких пробелов, то эти значения нужно вывести. Условно работнику поступает заявка, где нужно обзвонить всех клиентов у которых не заполнены адреса в анкете, чтобы это сделать их нужно сначала найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:14 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
dmdmdm, Копирую текст который чуть ниже в сообщениях. авторПриветствую :) Да, мне друг тоже самое говорил, что в первом задании про адреса, используется trim. Но что-то допереть не можем, как именно он тут используется. Я читал про него, получается что он удаляет с начала и с конца строки пробелы, или сначала и с конца одновременно. Пробел не учитываем, имелось ввиду, что надо вывести те значения где если есть пробел, null, или нет никаких пробелов, то эти значения нужно вывести. Условно работнику поступает заявка, где нужно обзвонить всех клиентов у которых не заполнены адреса в анкете, чтобы это сделать их нужно сначала найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:15 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
автор1. Найти адреса где нет никаких значений, пробел не учитываем и пустые строки с NULL не учитываем. Код: plsql 1. 2.
автор2. Найти клиентов, с типом телефона "мобильный", у которых в номере меньше 10 цифр В номере нужно пропускать скобки, пробелы Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:39 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Anton Polikarpov dmdmdm, Копирую текст который чуть ниже в сообщениях. авторПриветствую :) Да, мне друг тоже самое говорил, что в первом задании про адреса, используется trim. Но что-то допереть не можем, как именно он тут используется. Я читал про него, получается что он удаляет с начала и с конца строки пробелы, или сначала и с конца одновременно. Пробел не учитываем, имелось ввиду, что надо вывести те значения где если есть пробел, null, или нет никаких пробелов, то эти значения нужно вывести. Условно работнику поступает заявка, где нужно обзвонить всех клиентов у которых не заполнены адреса в анкете, чтобы это сделать их нужно сначала найти. страшная тайна про как именно .. trim Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 10:43 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Если список знаков помимо цифр известен и не будет меняться, то быстрее через replace или translate. Если же от пользователя может прилететь что угодно ("длинное тире", подчёркивания, буквы, etc.), то regexp надёжнее. Но тут надо учитывать, что на миллионах и десятках миллионов записей разница в скорости с regexp уже довольно заметна. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 15:17 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
rpovarov Если же от пользователя может прилететь что угодно ("длинное тире", подчёркивания, буквы, etc.), то regexp надёжнее. translate*2 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 16:37 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
orawish, Привет. Сегодня на одном из зарубежных форумов(st.of) Паренек сделал так: Код: plsql 1. 2.
Я так понял, что и это сработает правильно. Или есть все таки разница между вашим запросом и этим в плане выдачи аутпута? Я пытался использовать ваш запрос, что-то у меня ничего не получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 19:22 |
|
REPLACE ИЛИ REGEXP
|
|||
---|---|---|---|
#18+
Вы для начала определитесь с требованиями. НЕ NULL или NULL, где пробелы тоже считаются пустыми строками непонятно совсем. Пробелы посреди строки "999 телефон 000 " нужны или нет? Если пробелы есть , что с ними делать? И т.д. Входные данные, предполагаемые выходные данные. Пустая строка и NULL в Oracle - одно и то же. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2020, 19:35 |
|
|
start [/forum/search_topic.php?author=Alex777Alex1&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
9ms |
get forum list: |
11ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 697ms |
total: | 895ms |
0 / 0 |