Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / А можноли вообще такое select-ом сделать? / 21 сообщений из 21, страница 1 из 1
17.10.2007, 13:31
    #34874842
geki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
В БД фамилия, имя и отчество хрянится в одном столбце, возможно ли сделать запрос который бы выводил их в отдельных столбцах?
Подскажите, пожалуйста!
...
Рейтинг: 0 / 0
17.10.2007, 13:33
    #34874854
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Код: plaintext
 А можноли вообще такое select-ом сделать?
А чего бы и нет?
instr + substr тебе в помощь
...
Рейтинг: 0 / 0
17.10.2007, 13:35
    #34874857
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Старшие товарищи возможно подскажут более элегантный метод, но решение в лоб
select кучка(функций(вырезающих(фамилию(my_field)))), кучка(функций(вырезающих(имя(все тот же my_field)))), кучка(функций(вырезающих(отчество(и снова my_field))))
from my_table

В качестве фунций либо substr (или как он точно звучит в постгресе)+ определение позиции пробела в строке, либо регулярками.
...
Рейтинг: 0 / 0
17.10.2007, 13:47
    #34874909
geki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
я смысл понял, но не могу понять как это сделать substring режит по кол-ву символом а оно уменя всегда разное....! Как мне это замутить?
...
Рейтинг: 0 / 0
17.10.2007, 14:02
    #34874984
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
gekiя смысл понял, но не могу понять как это сделать substring режит по кол-ву символом а оно уменя всегда разное....! Как мне это замутить?Найти позицию пробела в строке
...
Рейтинг: 0 / 0
17.10.2007, 14:03
    #34874987
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
pamir gekiя смысл понял, но не могу понять как это сделать substring режит по кол-ву символом а оно уменя всегда разное....! Как мне это замутить?Найти позицию пробела в строкеЕсли они у тебя пробелами разделяются. В общем случае - найти позицию разделителя.
...
Рейтинг: 0 / 0
17.10.2007, 14:27
    #34875105
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Код: plaintext
SELECT split_part('карл у клары украл кораллы',' ', 3)
...
Рейтинг: 0 / 0
17.10.2007, 14:30
    #34875121
Rastafarra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Код: plaintext
1.
2.
select regexp_replace(name, '([а-яА-Я]*)\ .*', E'\\1', 'g'),
       regexp_replace(name, '.*\ ([а-яА-Я]*)\ .*', E'\\1', 'g'),
       regexp_replace(name, '.*\ .*\ ([а-яА-Я]*)', E'\\1', 'g')

имхо как-то так. запускать не пробовал :)
...
Рейтинг: 0 / 0
17.10.2007, 14:34
    #34875133
pamir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
4321
Код: plaintext
SELECT split_part('карл у клары украл кораллы',' ', 3)
Я же говорил про старших товарищей :)
...
Рейтинг: 0 / 0
17.10.2007, 14:39
    #34875157
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
pamir 4321
Код: plaintext
SELECT split_part('карл у клары украл кораллы',' ', 3)
Я же говорил про старших товарищей :)гм. в старшие не гожусь, но:
тут правда бяка с количеством пробелов в разделителях. иногда в сплит_парт будет попадаться пробел. но перебрать все парты можно. придется хранимку писать. Или же сначал сжать пробелы регэкспами, а потом отсплитить парты.
...
Рейтинг: 0 / 0
17.10.2007, 14:49
    #34875196
geki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Вот это я понимаю, split_part!!!!!!! То что нужно!!! Все замутилось!)))))))))
Спасибо ОГРОМНОЕ!
...
Рейтинг: 0 / 0
17.10.2007, 15:05
    #34875283
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
можно с помощью функции string_to_array
...
Рейтинг: 0 / 0
17.10.2007, 15:20
    #34875363
Rastafarra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
специально попробовал :)

Код: plaintext
1.
2.
select regexp_replace('карл  у	клары	   украл кораллы', '^([а-яА-Я]*).*$', E'\\1', 'g'),
       regexp_replace('карл  у	клары	   украл кораллы', '^[а-яА-Я]*[[:space:]]*([а-яА-Я]*).*$', E'\\1', 'g'),
       regexp_replace('карл  у	клары	   украл кораллы', '^[а-яА-Я]*[[:space:]]*[а-яА-Я]*[[:space:]]*([а-яА-Я]*).*$', E'\\1', 'g')
...
Рейтинг: 0 / 0
17.10.2007, 15:55
    #34875565
4321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Rastafarraспециально попробовал :)

Код: plaintext
1.
2.
select regexp_replace('карл  у	клары	   украл кораллы', '^([а-яА-Я]*).*$', E'\\1', 'g'),
       regexp_replace('карл  у	клары	   украл кораллы', '^[а-яА-Я]*[[:space:]]*([а-яА-Я]*).*$', E'\\1', 'g'),
       regexp_replace('карл  у	клары	   украл кораллы', '^[а-яА-Я]*[[:space:]]*[а-яА-Я]*[[:space:]]*([а-яА-Я]*).*$', E'\\1', 'g')


Код: plaintext
1.
2.
SELECT f[ 1 ],f[ 2 ],f[ 3 ], f[ 4 ], -- ....
 FROM  
(SELECT string_to_array(trim(regexp_replace(' карл   у   клары украл     кораллы ','(\ +)',' ','g')) , ' ') as f) AS foo
?
...
Рейтинг: 0 / 0
17.10.2007, 16:05
    #34875614
_Андрей_М
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Ну и до кучи :-)
Код: plaintext
1.
2.
select substring('Иванов   Иван     Иванович' from '(\\w+)\\s+\\w+\\s+(\\w+)'),
	substring('Иванов   Иван     Иванович' from '\\w+\\s+(\\w+)\\s+\\w+'),
	substring('Иванов   Иван     Иванович' from '\\w+\\s+\\w+\\s+(\\w+)')
...
Рейтинг: 0 / 0
18.10.2007, 08:12
    #34876860
Rastafarra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
ого, круто! :)

...пошел курить маны и учиться писать regexp-ы... :)
...
Рейтинг: 0 / 0
18.10.2007, 08:30
    #34876876
glebofff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Мне кажется, сделать это надо один раз - разнести по столбцам.
...
Рейтинг: 0 / 0
18.10.2007, 10:48
    #34877141
geki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
ну спасибо ребята столько вариантов написали, а делать это нужно систематически так идет каждодневная выгрузка в дурацкий *.dbf. )))
...
Рейтинг: 0 / 0
18.10.2007, 10:53
    #34877165
geki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
ребята, поскажите плиз как тут же сделать замену всех украинских 'i' на анклийские 'i', поскольку dbf c украинской 'i' показывает все свои прелести (((.
Нужно как я понял вкрутить еще какуй-то регулярку окромя той???!
...
Рейтинг: 0 / 0
18.10.2007, 11:00
    #34877196
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
gekiребята, поскажите плиз как тут же сделать замену всех украинских 'i' на анклийские 'i', поскольку dbf c украинской 'i' показывает все свои прелести (((.
Нужно как я понял вкрутить еще какуй-то регулярку окромя той???!банальный replace
...
Рейтинг: 0 / 0
18.10.2007, 11:35
    #34877317
geki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А можноли вообще такое select-ом сделать?
Всем спасибо с заменой сам разобрался, функция replace )))))
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / А можноли вообще такое select-ом сделать? / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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