Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 17:07   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию поиск пробелов в строке, преобразование

есть у меня на sql server 2000 таблица с пользователями, в поле Name - 'ИВАНОВ Иван Иванович'. как мне преобразовать поле 'ИВАНОВ Иван Иванович' в 'И.И.Иванов'.а еще нужно поле 'И.И.Иванову', т.е. фамилии всех пользователе перевести в дательный падеж. как организовать все это на уровне БД и на уровне приложения?

Последний раз редактировалось kate158; 27.02.2012 в 17:10.
kate158 вне форума Ответить с цитированием
Старый 27.02.2012, 17:19   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В базе если разово, то разовый скрипт, если постоянно, то пользовательскую функцию. Для поиска пробелов в тексте можно использовать CHARINDEX. Сработает если все данные строго однотипные, т.е. "Ф И О". В противном случае куча проблем. На уровне приложения если делать, то вычисляемое поле. Считаю этот вариант более предпочтительным, поскольку можно менять прогу, не затрагивая информацию в базе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.02.2012, 17:37   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
select fam, imot, substring(fam, len(fam)-1,2), case when substring(fam, len(fam)-1,2)='ов' then fam+'у' else fam+'????' end as famdat
from ( select substring(fio, 1, lenfam-1) as fam, ltrim(substring(fio, lenfam+1, len(fio))) as imot
       from ( select fio, charindex(' ', fio) as lenfam
              from ( select 'иванов иван иванович' as fio 
                   ) as f 
            ) as f
     ) f
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 27.02.2012, 18:05   #4
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

Цитата:
evg_m
ага)))
помимо Иванова, в базе есть фамилии Коцюба, Кабо, и т.д. и т.п. =)
кароче, по поводу д.п. я подумала что лучше фамилии в падеже добавлять ручками в БД
kate158 вне форума Ответить с цитированием
Старый 27.02.2012, 18:14   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
лучше фамилии в падеже добавлять ручками в БД
Если есть еще пол, то вполне можно и проскланять фамилии в зависмости от окончания и пола. Правил вроде и не очень много для этого
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удвоение пробелов в строке Dasha1610 Помощь студентам 2 27.02.2012 13:26
Добавление к строке определенное количество пробелов Jetro Общие вопросы Delphi 4 10.12.2011 16:22
Удаление пробелов в строке aimk0 БД в Delphi 7 17.06.2011 09:14
поиск пробелов в строке на Assembler'е Antrikot Помощь студентам 1 22.08.2010 06:24
Подсчёт пробелов в ведённой строке prikolist Общие вопросы C/C++ 10 10.04.2009 15:52