Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 264
от 14.06.2007, 11:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 436, Экспертов: 61
В номере:Вопросов: 1, Ответов: 3


Вопрос № 90673: Здраствуйте! помогите пожалуйста!!! Как из ФИО (Иванов Иван Иванович) запросом сформировать 2 столбца(фамилия и имя отчество), и эти два столбца разбить по буквам. То есть в итоге должно быть: 1 столбец: И В А Н О В 2 столбец: И В А Н И...

Вопрос № 90.673
Здраствуйте! помогите пожалуйста!!! Как из ФИО (Иванов Иван Иванович) запросом сформировать 2 столбца(фамилия и имя отчество), и эти два столбца разбить по буквам. То есть в итоге должно быть:

1 столбец: И В А Н О В
2 столбец: И В А Н И В А Н О В И Ч
Отправлен: 09.06.2007, 10:16
Вопрос задала: Кунафина Гульназ Ильдаровна (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Виктор Пырлик
Здравствуйте, Кунафина Гульназ Ильдаровна!
Возможно так:
select
substring(fio_pers,1,CHARINDEX(' ',fio_pers,1))as FAM_PERS,
substring(fio_pers,CHARINDEX(' ',fio_pers,1),len(fio_pers)) as NAME_PERS
from pers

где fio_pers - поле ФИО
pers - таблица персонала
FAM_PERS - результат фамилия
NAME_PERS - результат имя отчество
---------
Надо пребывать господа, пребывать! Иначе ничего не получится!
Ответ отправил: Виктор Пырлик (статус: 3-ий класс)
Ответ отправлен: 09.06.2007, 11:15
Оценка за ответ: 4

Отвечает: Sergey T
Здравствуйте, Кунафина Гульназ Ильдаровна!

Этот вариант более точен.
1. Не будет выводится фамилия в поле с именем и отчеством если есть только фамилия.
2. Ну и обрезаются лишние пробелы и вообще не выводится лишняя информация.
3. Не помню уже будет-ли работать такая конструкция в стандарте SQL-92, но на SQL Server 2000 работать будет.

SELECT
LTRIM(SUBSTRING(ФИО, 1, CASE ISNULL(CHARINDEX(' ', LTRIM(ФИО)), 0)
WHEN 0 THEN LEN(ФИО)
ELSE CHARINDEX(' ', LTRIM(ФИО))
END)) AS 'Фамилия',
SUBSTRING(ФИО, ISNULL(CHARINDEX(' ', LTRIM(ФИО)), 0)+1,
CASE ISNULL(CHARINDEX(' ', LTRIM(ФИО)), 0)
WHEN 0 THEN 0
ELSE LEN(ФИО)-CHARINDEX(' ', LTRIM(ФИО))
END) AS 'Имя Отчество'
FROM Таблица

По второму вопросу можно использовать ту же функцию SUBSTRING, но в запросе это сделать невозможно - так как вы не будете знать сколько букв у вас в каждой фамилии. Это делается в циклах WHILE или с помощью курсора.
Удачи.
Ответ отправил: Sergey T (статус: 1-ый класс)
Ответ отправлен: 09.06.2007, 12:21
Оценка за ответ: 4

Отвечает: Игорь Елизаров
Здравствуйте, Кунафина Гульназ Ильдаровна!
не совсем понятна вторая часть вопроса...
зачем надо разбивать по буквам ?
наверное чтобы осуществлять поиск, но это можно сделать командой Like
например select * from table where fio like 'Ан%"
отбирает все фио, которые начинаются на Ан

---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: Студент)
Ответ отправлен: 09.06.2007, 22:03
Оценка за ответ: 3
Комментарий оценки:
по буквам мне надо разбить, так как у меня каждая буква должна хранится в своей ячейке. Видимо я как то не правильно сформулировала свой вопрос, ч&# 1090;о меня ни кто не понял.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное