Как я могу передать строку, содержащую двойное значение, в числовое значение, сохраняя точность. Если строка не является двойной, то конвертировать в нольЛистинг String to Double using Postgresql
ответ
Этот запрос использует регулярное совпадение для возврата двойника, если входная строка имеет «числовой контент», а также цифры или десятичные числа с разделителем как 1.0
, 18789.903
. Возвращает 0, если строка ввода содержит символы с числами, такие как 10hghj
. Символ минус перед строкой допускается (отрицательное двойное):
-- returns 1.2143
WITH subquery AS (SELECT '1.2143'::text as value)
SELECT
CASE WHEN value ~ '^(-)?[0-9]+\.?([0-9]+)?$'
THEN value::double precision
ELSE 0
END FROM subquery;
-- returns 0 because input is a contains not digits characters
-- (the regex expression is the same)
WITH subquery AS (SELECT '1214gh'::text as value)
SELECT
CASE WHEN value ~ '^(-)?[0-9]+\.?([0-9]+)?$'
THEN value::double precision
ELSE 0
END FROM subquery;
Объяснение:
~
оператор соответствует регулярному выражению в PostgreSql. Больше информации здесь: http://www.postgresql.org/docs/9.4/static/functions-matching.html#FUNCTIONS-POSIX-TABLE
Выражение CASE WHEN THEN ELSE
позволяет изменять возвращаемое значение в зависимости от одного или нескольких условий. В части WHEN разрешены все утверждения, которые возвращают логическое значение. Больше информации: http://www.postgresql.org/docs/9.4/static/functions-conditional.html
Работает ли она на одном значении цифры, например '1'? –
Спасибо, я исправил его. Теперь он работает с одной цифрой –
- 1. C++ string to double
- 2. double to hex string & hex string to double
- 3. Typecast double to string - concatenate double to string
- 4. double to string formatting
- 5. Parse String to double []
- 6. long double to string
- 7. VB.Net String to double
- 8. double to string error
- 9. Недопустимый листинг из double to datetime error
- 10. excel to postgresql using spring
- 11. C++ Precision: String to Double
- 12. C++ string to double conversion
- 13. Locale independent String to double
- 14. Matlab string to double (str2double)
- 15. String to double, precision lost
- 16. Java - String to Double Issue
- 17. double to string in C++
- 18. Интеграционные службы double to string
- 19. WPF string to double converter
- 20. Sanitize string to using angularjs
- 21. Листинг String to List <NameValuePair>
- 22. casting string to bool using nHibernate Criteria
- 23. Выполняет ли листинг double to int округленное число?
- 24. C++ Листинг double to char и заменить на std :: array
- 25. Преобразование Double to String. Потеря точности
- 26. Convert List [Double] to List [String]
- 27. std :: string to float или double
- 28. Ошибка Double to String в Swift
- 29. Java double to string с определенной точностью
- 30. Array of double to JSON string SWIFT
Что делает строку двойной? Является ли «1» двойным? Как насчет «1,0»? – user464502
И «1», и «1.0» - это удвоения. –
. Я отредактировал свой ответ, чтобы возвратить double, также если вход представляет собой строку, содержащую целое число. –