Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
GIN
Зарегистрирован: 04.03.2010 Сообщения: 114
|
Добавлено: Ср Авг 11, 2010 12:40 Заголовок сообщения: Нужна функция! |
|
|
Народ подскажите, нужна функция которая работает с текстом, так же как и Substring, но только не побуквенно, а через пробел. Есть она такая? |
|
Вернуться к началу |
|
 |
Dimich1978
Зарегистрирован: 18.05.2010 Сообщения: 69
|
Добавлено: Чт Авг 12, 2010 10:20 Заголовок сообщения: |
|
|
что понимаете под выражением "через пробел"? |
|
Вернуться к началу |
|
 |
Dimich1978
Зарегистрирован: 18.05.2010 Сообщения: 69
|
Добавлено: Чт Авг 12, 2010 10:21 Заголовок сообщения: |
|
|
Да и описать что пытаетесь сделать было бы неплохо. Substring используется в разных "вариациях" |
|
Вернуться к началу |
|
 |
GIN
Зарегистрирован: 04.03.2010 Сообщения: 114
|
Добавлено: Чт Авг 12, 2010 10:38 Заголовок сообщения: |
|
|
решение найдено, спасибо за отзыв) но интересно узнать у кого какие варианты.
Например ячейка "Иванов Иван Иванович", а пробел или другой знак это не важно. |
|
Вернуться к началу |
|
 |
Dimich1978
Зарегистрирован: 18.05.2010 Сообщения: 69
|
Добавлено: Чт Авг 12, 2010 11:08 Заголовок сообщения: |
|
|
в результате что должно быть? в разные колонки чтобы распихалось и стало
F I O
Иванов Иван иванович
Так? |
|
Вернуться к началу |
|
 |
GIN
Зарегистрирован: 04.03.2010 Сообщения: 114
|
Добавлено: Чт Авг 12, 2010 11:09 Заголовок сообщения: |
|
|
Да что бы были отдельные F, I, O. |
|
Вернуться к началу |
|
 |
Nemoxur
Зарегистрирован: 30.04.2010 Сообщения: 49
|
Добавлено: Ср Авг 18, 2010 12:30 Заголовок сообщения: |
|
|
Например можно написать так с учётом того что могут отсутствовать как имя так и фамилия и отчество
Код: | ,SUBSTRING((CASE WHEN patindex('% %',LTRIM(RTRIM(str3))) = 0 THEN '' ELSE
UPPER(SUBSTRING(str3,1,1))END)+ LOWER(SUBSTRING(str3,2,(CASE WHEN patindex('% %',str3) = 0 THEN 0 ELSE patindex('% %',str3)-1 END))),1,40)
,(CASE WHEN patindex('% %',str3) = 0 THEN UPPER(SUBSTRING(LTRIM(LOWER(SUBSTRING(STUFF(str3,1,patindex('% %',str3),''),patindex('% %',STUFF(str3,1,patindex('% %',str3),'')),200))),1,1))+
SUBSTRING(LTRIM(LOWER(SUBSTRING(STUFF(str3,1,patindex('% %',str3),''),patindex('% %',STUFF(str3,1,patindex('% %',str3),'')),200))),2,40)
ELSE
SUBSTRING(SUBSTRING(LTRIM(UPPER(SUBSTRING(STUFF(str3,1,patindex('% %',str3),''),1,patindex('% %',STUFF(str3,1,patindex('% %',str3),''))))),1,1)+
SUBSTRING(LOWER(LTRIM(SUBSTRING(STUFF(str3,1,patindex('% %',str3),''),1,patindex('% %',STUFF(str3,1,patindex('% %',str3),''))))),2,40),1,40) END)
,(CASE WHEN patindex('% %',str3) = 0 THEN '' ELSE
SUBSTRING(UPPER(SUBSTRING(LTRIM(LOWER(SUBSTRING(STUFF(str3,1,patindex('% %',str3),''),patindex('% %',STUFF(str3,1,patindex('% %',str3),'')),40))),1,1))+
SUBSTRING(LTRIM(LOWER(SUBSTRING(STUFF(str3,1,patindex('% %',str3),''),patindex('% %',STUFF(str3,1,patindex('% %',str3),'')),200))),2,40) ,1,40)END) |
Код не претендует на лучший, думаю что можно написать намного изящнее и качаственее  |
|
Вернуться к началу |
|
 |
GIN
Зарегистрирован: 04.03.2010 Сообщения: 114
|
Добавлено: Ср Сен 15, 2010 05:17 Заголовок сообщения: |
|
|
Вообщем-то так и сделал.
Только попроще конечно, но тоже через SUBSTRING с использованием CHARINDEX и LEN, не учитывая, что нет каких-то данных (сомнительно что такое может быть) и отчество может быть двойным.
Выкладывать код не стоит - Вашего вполне достаточно для тех кто столкнется с этой задачей.
Спасибо за ответ. |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|