powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вырезать всё, что идёт после символа "L"
7 сообщений из 7, страница 1 из 1
Вырезать всё, что идёт после символа "L"
    #39936093
Samyrro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, есть строка 380998887744L255456859856584. Как вырезать букву L и всё что послё неё? Или ещё лучше найти через рег. выражение номер телефона 380998887744 и оставить только его
...
Рейтинг: 0 / 0
Вырезать всё, что идёт после символа "L"
    #39936190
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Samyrro,
См. фунцию split_part
...
Рейтинг: 0 / 0
Вырезать всё, что идёт после символа "L"
    #39936214
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fte,
см. функции regexp_matches и regexp_replace. Задачу можно решить с помощью любой из них.
...
Рейтинг: 0 / 0
Вырезать всё, что идёт после символа "L"
    #39936239
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Samyrro
Здравствуйте, есть строка 380998887744L255456859856584. Как вырезать букву L и всё что послё неё? Или ещё лучше найти через рег. выражение номер телефона 380998887744 и оставить только его


Если формат записи фиксированный, а не произвольный, то номер украинского мобильного телефона имеет фиксированную длину 12 символов
Код: plsql
1.
2.
3.
select character_length('380998887744')  -- = 12
select substring('380998887744L255456859856584', 1, 12) -- = 380998887744 если всегда брать первые 12
select substring('380998887744L255456859856584', 1,  position('L' in '380998887744L255456859856584')-1 ) -- = 380998887744 до L
...
Рейтинг: 0 / 0
Вырезать всё, что идёт после символа "L"
    #39936240
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если формат записи фиксированный, а не произвольный, то номер украинского мобильного телефона имеет фиксированную длину 12 символов
Код: plsql
1.
2.
3.
select character_length('380998887744')  -- = 12
select substring('380998887744L255456859856584', 1, 12) -- = 380998887744 если всегда брать первые 12
select substring('380998887744L255456859856584', 1,  position('L' in '380998887744L255456859856584')-1 ) -- = 380998887744 до L
...
Рейтинг: 0 / 0
Вырезать всё, что идёт после символа "L"
    #39936253
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DSKalugin,
таки пришлось написать. Изучать использование регулярных выражений всегда полезно.
В данном примере

Код: plsql
1.
2.
3.
-- убирает конец строки, начиная с 'L':
SELECT REGEXP_REPLACE ('12345L6789', '[L](.)*$', '', 'g') AS phone_number
-- результат: '12345'



Или
Код: plsql
1.
2.
3.
4.
5.
6.
-- Ищет группу цифр в начале строки
WITH sq AS (
SELECT REGEXP_MATCHES('12345L6789', '^[0-9]+', 'g') AS matches 
) SELECT matches [1] AS phone_num FROM sq
-- результат  REGEXP_MATCHES - массив из одного элемента, который и выбираем с помощью подзапроса.
-- если ничего не найдено (из-за непредусмотренного формата данных), результат пустой.
...
Рейтинг: 0 / 0
Вырезать всё, что идёт после символа "L"
    #39936339
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ещё как можно выбрать с помощью REGEXP_MATHES:

SELECT UNNEST(REGEXP_MATCHES('12345L6789' '^[0-9]+', 'g')) LIMIT 1

Будет выдан 1 результат, или совсем не будет результатов (что потребует дополнительного рассмотрения - соответствует ли формат данных предусмотренному в регулярном выражении). Способ с REGEXP_REPLACE всегда даст 1 результат, но не обнаружит непредусмотренный формат данных.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вырезать всё, что идёт после символа "L"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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