Форум программистов, компьютерный форум, киберфорум
Наши страницы

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Сложную строку в число - PostgreSQL

15.12.2016, 03:25. Просмотров 480. Ответов 2
Метки нет (Все метки)

Гуру, подскажите куда копать... уже час над "мелочью" бьюсь...

Надо строку начинающуюсь на число превратить в число
Например вида "234-a03k=sjkow%" надо превратить в 234 откинув "лишнее".

("234-a03k=sjkow%")::INTEGER => ERROR!

пробовал даже
SELECT REGEXP_REPLACE("234-a03k=sjkow%", '[^0-9]', '----')::TEXT...
тоже не правильно "очищает"
Думаю просто знания регулярки не хватает... подскАжите?

Добавлено через 18 минут
...как всегда... 2 часа проигрался и сам нашел
SQL
1
SUBSTRING(TRIM(' 234-a03k=sjkow%'), '(^[0-9]*)*')::INTEGER
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2016, 03:25
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сложную строку в число (PostgreSQL):

Перевести строку в число (аналог функции StrToInt) - Базы данных
В singleedit введено число, но как объяснить билдеру что это число? Это необходимо для поиска. В delphi была такая функция StrToInt(S:...

Программа на С, которая вводит число типа int с клавиатуры, преобразует ее в строку (str), выводит на дисплей число и строку. - C++
Задача направленная на усвоение следующих понятий: прототип функции; заголовок функции; тело функции; параметры, принимаемые функцией...

Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. - C++
Дано целое число. Вывести его строку-описание вида «отрицательное чет-ное число», «нулевое число», «положительное нечетное число» и т. д. ...

Считать строку, и найти число вхождений символа в эту строку (с использованием strchr) - C (СИ)
Почему не работает, компилятор ошибок не ловит, при запуске вылетает с ошибкой. Программа должна считать строку, и найти кол-во вхождений...

Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом - см. текст задачи - Prolog
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Преобразовать число в строку записать строку в обратном порядке - Turbo Pascal
Дано шестизначное натуральное число. Преобразовать его в строку. Записать полученную строку в обратном порядке. Подсчитать сумму четных...

2
grgdvo
668 / 582 / 179
Регистрация: 02.09.2012
Сообщений: 1,712
15.12.2016, 05:34 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Лучше так
SQL
1
SELECT SUBSTRING(TRIM(' 234-a03k=sjkow%'), '^[0-9]+')::INTEGER
По умолчанию звездочка "жадная" штука, что может приводить к странным на первый взгляд вещам.
Так, в вашем случае при ошибочной входной строке будет ошибка преобразования
SQL
1
SELECT SUBSTRING(TRIM('a234-a03k=sjkow%'), '(^[0-9]*)*')::INTEGER  --> ERROR!!!
А так будет просто NULL
SQL
1
SELECT SUBSTRING(TRIM('a234-a03k=sjkow%'), '^[0-9]+')::INTEGER
Отличие можно увидеть так

SQL
1
SELECT regexp_matches('a234-a03k=sjkow%', '^[0-9]+')
возвращает пустоту (NULL)

SQL
1
SELECT regexp_matches('a234-a03k=sjkow%', '(^[0-9]*)*')
возвращает массив с пустой строкой (строка нулевой длины)
SQL
1
{""}
что к числу уже не преобразуется также как и
SQL
1
SELECT ''::INTEGER --> ERROR!!!
1
Tester64
396 / 357 / 44
Регистрация: 22.05.2013
Сообщений: 2,518
15.12.2016, 13:42  [ТС] #3
Цитата Сообщение от grgdvo Посмотреть сообщение
Лучше так
Спасибо! проверю... не подумал проверить поставив в начало букву... хотя можно попробовать символ "0" в начало всегда добавля...
(регулярку так и не выучил - применять пока негде - первый раз за много лет)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2016, 13:42
Привет! Вот еще темы с ответами:

Дана строка S и число N. Преобразовать строку S в строку длины N - Turbo Pascal
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Дана строка S и число N. Преобразовать строку S в строку длины N - Delphi
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые символы - Turbo Pascal
Дана строка S и число N. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то отбросить первые...

Написать функцию, которая преобразует строку, содержащую произвольную последовательность 0 и 1 (двоичное число), в десятичное число - Delphi
Написать функцию, которая преобразует строку, содержащую произвольную последовательность 0 и 1 (двоичное число), в десятичное число. В...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru