Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5

Получение целой части поля

18.05.2023, 00:15. Показов 3165. Ответов 23

Студворк — интернет-сервис помощи студентам
Добрый день.
Только начинаю изучать PostgreSQL (С другими СУБД работаю давно).
Вопрос по пользовательским функциям: можно ли создать функцию, которая будет получать целую часть поля типа varchar?
Примеры:
Значение поля: '123' Результат: 123
Значение поля: '12А' Результат: 12
Значение поля: '12/3' Результат: 12
Значение поля: 'А' Результат: 0
Если можно, расскажите в общих словах, где это лучше сделать.

Добавлено через 1 час 55 минут
Всем спасибо за оперативность.
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
CREATE OR REPLACE FUNCTION NextNumb(Numb VARCHAR)
    RETURNS INTEGER 
    LANGUAGE plpgsql
    AS
$$    
 
 DECLARE N INTEGER;
 DECLARE I INTEGER;
 DECLARE CH CHAR;
 DECLARE CODE INTEGER;
 DECLARE RES INTEGER;
 
 
BEGIN
 
N:=LENGTH(Numb);
i:=1;
RES:=0;
WHILE (N>0)
   LOOP
   CH:=substr(Numb,I,1);
   CODE:=ascii(CH);
   IF (CODE>=48) AND (CODE<=57) THEN
      RES:=RES*10+CODE-48;
   ELSE N:=1;
   END IF;
   I:=I+1;
   N:=N-1;
   END LOOP;
RETURN RES;
END
 
$$
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2023, 00:15
Ответы с готовыми решениями:

Группировка по части поля (с начала поля до символа "#")
Форумчане,доброго времени суток! Изменяю свою базу данных и возникла проблема(вопрос) Сейчас существует группировка по...

Получение целой части
Если нужен результат типа int, то есть ли что-то лучшее (по какому-то критерию) для получения целой части от double (переменной, литерала,...

Получение целой части числа
вопрос исчерпал себя) осталась только мелочь: можно double a = 0.1234; long long b = (long long) a; так делать? всмысле...

23
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
18.05.2023, 07:42
Можно и так
SQL
1
2
3
4
5
6
7
CREATE OR REPLACE FUNCTION NextNumb(Numb VARCHAR)
    RETURNS INTEGER 
    LANGUAGE SQL
    AS
$$
SELECT ((regexp_match(Numb,'^\d+'))[1])::INTEGER
$$
1
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
18.05.2023, 12:07  [ТС]
К сожалению, так не получается.
Миниатюры
Получение целой части поля  
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
18.05.2023, 12:12
Внутри функции напишите Numb::text ...
SQL
1
2
3
4
5
6
7
CREATE OR REPLACE FUNCTION NextNumb(Numb VARCHAR)
    RETURNS INTEGER 
    LANGUAGE SQL
    AS
$$
SELECT ((regexp_match(Numb::text,'^\d+'))[1])::INTEGER
$$
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
18.05.2023, 13:03  [ТС]
Та же ошибка. Он говорит, что либо нет такой функции (regexp_match), или её аргументы не те.
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
18.05.2023, 13:22
Функция работает стопудово работает, ИМХО Вы не умеете её готовить... версия postgresql? и сам запрос? и от куда пытаетесь его сделать?
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
18.05.2023, 13:33  [ТС]
Где можно узнать версию?
Запрос делаю из pgAdmin III, "выполнить пользовательские SQL-запросы "

К слову, та функция, которую я написал, нормально работает.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
18.05.2023, 13:37  [ТС]
***
Миниатюры
Получение целой части поля  
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
18.05.2023, 14:09  [ТС]
Нашёл версию. Postgresql 9.6.20-astrace2
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
19.05.2023, 10:25
9.6 deadline ! сто лет как....
В astralinux - есть postgresql 11
для 9.6
SQL
1
SELECT ((regexp_matches(Numb::text,'^\d+'))[1])::INTEGER
1
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
19.05.2023, 10:52  [ТС]
Ну, почти.
Моя - предпоследняя колонка, ваша - последняя.
Миниатюры
Получение целой части поля  
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
19.05.2023, 11:04  [ТС]
Ну, а по поводу Linux - взял последний Орёл common edition на их сайте, какая там предустановленная версия Postgre была, той и пользуюсь.

Добавлено через 9 минут
Я с линуксом-то всего вторую неделю работаю.
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
19.05.2023, 11:17
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Ну, почти.
Моя - предпоследняя колонка, ваша - последняя.
И в чем проблема? из null получить 0? почитайте документацию функция coalesce

Добавлено через 1 минуту
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Ну, а по поводу Linux - взял последний Орёл common edition на их сайте, какая там предустановленная версия Postgre была, той и пользуюсь.
А зачем вообще Astra????? возьмите нормальный Debian
1
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
19.05.2023, 11:23  [ТС]
Цитата Сообщение от fte65 Посмотреть сообщение
А зачем вообще Astra????? возьмите нормальный Debian
Затем, что импортозамещение.
Delphi, Windows, Oracle ---> Lazarus, Astralinux, PostgreSQL
И почти миллион строк исходного кода.
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
19.05.2023, 11:35
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Lazarus, Astralinux, PostgreSQL
В этом списке более уместен Debian вместо AstraLinux, Astra нужна только для МО РФ
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
19.05.2023, 11:47  [ТС]
Цитата Сообщение от fte65 Посмотреть сообщение
В этом списке более уместен Debian вместо AstraLinux, Astra нужна только для МО РФ
Это не я решаю.
https://habr.com/ru/news/666944/
0
106 / 67 / 29
Регистрация: 22.04.2022
Сообщений: 232
19.05.2023, 12:17
О Вы работаете в Росатоме - поздравляю, компания РуБитех -полный отстой , за деньги получили лицензии всяких ведомств, а теперь барыжат на всех остальных....
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,677
Записей в блоге: 5
19.05.2023, 15:24  [ТС]
Цитата Сообщение от fte65 Посмотреть сообщение
компания РуБитех -полный отстой , за деньги получили лицензии всяких ведомств, а теперь барыжат на всех остальных....
Мне-то что до этого?

Добавлено через 2 часа 58 минут
Цитата Сообщение от fte65 Посмотреть сообщение
И в чем проблема? из null получить 0?
Проблема в том, что вы в вашем варианте этого не сделали, из-за чего функция не в полном мере отражает ТЗ.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.05.2023, 16:52
Цитата Сообщение от Massaraksh7 Посмотреть сообщение
Linux - взял последний Орёл common edition на их сайте, какая там предустановленная версия Postgre
К дебиану и к астре в частности без проблем подключаются официальные репозитории PG (там есть все версии 9/10/11/12/13/14/15).
Делается как-то так:

Code
1
2
# /etc/apt/sources.list
deb [arch=amd64] http://apt.postgresql.org/pub/repos/apt focal-pgdg main
Добавлено через 58 секунд
Только астра CE была основана на Stretch (debian 9), который… уже не поддерживается (где-то с марта этого года)
0
55 / 50 / 5
Регистрация: 30.06.2022
Сообщений: 251
25.05.2023, 17:24
На alt linux проблем с обновлением вообще нет.
Может на него перейдёте? Там 14 точно есть, может и 15 уже.
Дистр наш - и хозяева дистра не ленятся, как астровцы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2023, 17:24
Помогаю со студенческими работами здесь

Получение целой и дробной части для десятичной дроби
Привет всем. Ищу ответа на достаточно простую задачу: человек вводит число в виде десятичной дроби, с которым в дальнейшем нужно...

Добавить в класс натуральной дроби поля знака и целой части
На основе структуры fraction создайте класс fraction. Данные класса должны быть представлены четырьмя полями: числителем, знаменателем,...

Как задать в числовом формате поля длину его целой и дробной части?
Здравствуйте. Как задать в числовом формате поля длину его целой и дробной части?

Присвоить целой переменной L сумму двух последних цифр целой части
Ребят помогите, вообще нет мыслей как сделать это. Присвоить целой переменной L сумму двух последних цифр целой части положительного...

Найти среднее арифметическое между суммами 1-й и 2-й цифр целой части и 2-й и 3-й цифрами дробной части числа
Номер 3. Дробная часть числа состоит из 3-х цифр. Найти среднее арифметическое между суммами 1-й и 2-й цифрами 2-й и 3-й цифрами дробной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера 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, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru