2013-09-17 4 views
1

Я пытаюсь удалить все до периода, другими словами, я хочу показать только значения, начинающиеся с периода. Напримерполучить все после периода postgresql

897.78 ==> 78 
74.25 ==> 25 
3657.256 ==> 256 

а ниже код показывает только все до периода, но я хочу, чтобы показать все, после того, как период

select volume, substring(volume from 1 for position('.' in volume) - 1) as column 
from MyTable ; 

ответ

2
select volume, substring(volume from (position('.' in volume)+1) for length(volume)) as column from MyTable; 

Это должно работать (не тестировался, так как у меня нет Postgre установлен на этом компьютере) :)

EDIT: даже просто

select volume, substring(volume from position('.' in volume)+1) as column from MyTable; 

должен работать, так как вы можете определить только начальное положение в подстроки

+0

спасибо так много, вы качаться – moe

0

Самый элегантный способ заключается в использовании регулярных выражений формы substring():

select volume, substring(volume from '[^.]*$') as column 
from 

См SQLFiddle этого запроса работы.

0

Другим способом было бы использовать string_to_array:

select volume,(string_to_array(volume,'.'))[2] as column 
from mytable 

SQLFiddle

Смежные вопросы