Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Разбить строку  [new]
Deamka
Member

Откуда:
Сообщений: 6
Запрос :
Select RTRIM(DESCR) as FIO, RTRIM(SP227) as DataRog, RTRIM(SP5238) as Dol
From SC16
Where
SC16.ISFOLDER = 0 AND SC16.ISMARK = 0


Строка FIO "Иванов Иван Иванович"

Как разбить FIO на три переменные FIO1 (Иванов), FIO2 (Иван ), FIO3 (Иванович)?


Вопрос для 1Сников:

Как узнать в запросе уволен сотрудник или работает?
26 ноя 13, 10:02    [15189551]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
_djХомяГ
Guest
по разбивке строки куча способов (например PARSENAME и тд и тп)
примеры
26 ноя 13, 10:46    [15189770]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
_djХомяГ
Guest
И вот
Кто лучше? (Фамилия Имя Отчество - > Фамилия И. О. )
26 ноя 13, 10:53    [15189808]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Deamka
Member

Откуда:
Сообщений: 6
_djХомяГ,

Спасибо!
Все равно не понимаю как его в запрос подставить :(
26 ноя 13, 11:38    [15190114]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Deamka
Все равно не понимаю как его в запрос подставить :(

Через копи-пейст и замену имени таблицы на вашу
26 ноя 13, 11:40    [15190126]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Deamka
Member

Откуда:
Сообщений: 6
Сюда? Страшно :)

USE [tempdb]
GO

DECLARE @tbl TABLE([name] VARCHAR(60))

INSERT INTO @tbl ([name])
SELECT 'Иванов, Иван Иванович' UNION ALL
SELECT 'Петров-Водкин,, Кузьма , Сергеевич'

SELECT
UPPER(REPLACE(Q.[fio], '.', ' ')) AS fio,
PARSENAME(Q.[fio], 3) AS [Surname],
PARSENAME(Q.[fio], 2) AS [Name],
PARSENAME(Q.[fio], 1) AS [Secname]
FROM (
SELECT
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(UPPER(
CASE
WHEN SUBSTRING([Name], LEN([Name]), 1) = '.' THEN SUBSTRING([Name], 1, LEN([Name]) - 1)
ELSE [Name]
END))), ',', ' '), ' ', ' '), ' ', ' '), ' ', ' '), ' ', ' '), ' ', '.') AS fio
FROM @tbl T
WHERE [Name] IS NOT NULL
) Q
GO
26 ноя 13, 12:06    [15190365]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Deamka
Сюда? Страшно :)

Вам тогда к психологу надо, а не программировать
26 ноя 13, 12:27    [15190520]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Deamka
Member

Откуда:
Сообщений: 6
Glory,

Ну рас ты такой умный подставь!
26 ноя 13, 13:02    [15190760]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Deamka
Ну рас ты такой умный подставь!

А за пивком не сбегать ?
26 ноя 13, 13:03    [15190766]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
Deamka
Сюда? Страшно

вы у себя на "боевом" сервере сразу тестируете?
26 ноя 13, 13:35    [15191098]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Deamka
Member

Откуда:
Сообщений: 6
StarikNavy,

Да!
Заводить копию, база большая :(
26 ноя 13, 14:58    [15191906]     Ответить | Цитировать Сообщить модератору
 Re: Разбить строку  [new]
Glory
Member

Откуда:
Сообщений: 104760
Deamka
Да!
Заводить копию, база большая :(

А создать тестовую таблицу опять страшно ?
26 ноя 13, 15:00    [15191922]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить