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

Есть в mssql похожая функция?
24 сен 12, 10:38    [13211209]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
invm
Member

Откуда: Москва
Сообщений: 9683
left
24 сен 12, 10:43    [13211243]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
invm
Member

Откуда: Москва
Сообщений: 9683
Прошу прощения, right, а не left.
24 сен 12, 10:44    [13211250]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мигелььь
Guest
invm,

Invalid length parameter passed to the LEFT or SUBSTRING function.
24 сен 12, 10:47    [13211266]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
Glory
Member

Откуда:
Сообщений: 104751
мигелььь
Invalid length parameter passed to the LEFT or SUBSTRING function.

Ну так передайте правильный параметер length в LEFT or SUBSTRING function
24 сен 12, 10:48    [13211275]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мигелььь
Guest
Glory,

Щас почитаю
http://msdn.microsoft.com/en-us/library/ms177601.aspx
24 сен 12, 10:50    [13211285]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мигелььь
Guest
мигелььь,

У меня дата Январь 2012 формат(char) как сделать 010112?
24 сен 12, 11:59    [13211843]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
Glory
Member

Откуда:
Сообщений: 104751
Заменить Январь на 0101
24 сен 12, 12:01    [13211856]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мигелььь
Guest
Glory,

я тоже так хотел, но подумал что 12 case не лучший вариант
24 сен 12, 12:09    [13211939]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
Glory
Member

Откуда:
Сообщений: 104751
мигелььь
я тоже так хотел, но подумал что 12 case не лучший вариант

Какие case ? Тупые replace
24 сен 12, 12:12    [13211972]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
Мегельь
Guest
Glory,

replace ([месяц],'Август','31.08.') поулчается 31.08. 2012 после 31.08. лишний пробел

Есть функция сжать пробелы?
24 сен 12, 12:24    [13212054]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
Мегельь
Glory,

replace ([месяц],'Август','31.08.') поулчается 31.08. 2012 после 31.08. лишний пробел

Есть функция сжать пробелы?
Может, про задачу расскажете, а?
Примеры строк приведёте, расскажете, что там может быть, а чего не может?
Версию сервера заодно покажите
24 сен 12, 12:26    [13212080]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
Мегельь
Guest
iap,

Думал справлюсь своими силами

Есть столбец (varchar (50)) там записи Сенятбрь 2012, май 2000, итд

хожу сделать их датами
24 сен 12, 12:29    [13212110]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
Glory
Member

Откуда:
Сообщений: 104751
Мегельь
Есть функция сжать пробелы?

Ага. replace называется
24 сен 12, 12:31    [13212117]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мегельь
Guest
Glory,

Сорри.... ступил
24 сен 12, 12:39    [13212171]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
Мегельь
iap,

Думал справлюсь своими силами

Есть столбец (varchar (50)) там записи Сенятбрь 2012, май 2000, итд

хожу сделать их датами
В них дня не хватает. Не находите? Или считать все первым числом?
Кстати говоря, Сенятбрь 2012 - это в каком же календаре такая дата может быть?
И что делать с такими неизвестными датами? Игнорировать, парсить или ещё что-нибудь?
SET LANGUAGE русский;
DECLARE @S VARCHAR(30)='май 2012';
SELECT CAST(@S AS DATETIME);
24 сен 12, 12:54    [13212277]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
Или так
SET LANGUAGE русский;
DECLARE @S VARCHAR(30)='май 2012';
SELECT CAST(@S AS DATE);
24 сен 12, 12:55    [13212285]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мегельь
Guest
iap,

В них дня не хватает. Не находите? Или считать все первым числом? - их считать на последнюю дату месяца
Кстати говоря, Сенятбрь 2012 - это в каком же календаре такая дата может быть? - увы это не календарь
24 сен 12, 12:58    [13212311]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
мегельь
увы это не календарь
Вопрос не о календаре, а о качестве данных в Ваших строках.
Если попробуете просто конвертировать 'Сенятбрь 2012' в дату, то я гарантирую,
что получите сообщение о невозможности это сделать.
24 сен 12, 13:08    [13212401]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
мегельь
Guest
iap,

Вы правы.

я сделал так


SELECT [месяц],

[расчет]=
CASE
WHEN replace ([месяц],'Январь ','31.01.') <> [месяц] then replace ([месяц],'Январь ','31.01.')
WHEN replace ([месяц],'Февраль ','29.02.') <> [месяц] then replace ([месяц],'Февраль ','29.02.')
WHEN replace ([месяц],'Март ','31.03.') <> [месяц] then replace ([месяц],'Март ','31.03.')
WHEN replace ([месяц],'Апрель ','30.04.') <> [месяц] then replace ([месяц],'Апрель ','30.04.')
WHEN replace ([месяц],'Май ','31.05.') <> [месяц] then replace ([месяц],'Май ','31.05.')
WHEN replace ([месяц],'Июнь ','30.06.') <> [месяц] then replace ([месяц],'Июнь ','30.06.')
WHEN replace ([месяц],'Июль ','31.07.') <> [месяц] then replace ([месяц],'Июль ','31.07.')
WHEN replace ([месяц],'Август ','31.08.') <> [месяц] then replace ([месяц],'Август ','31.08.')
WHEN replace ([месяц],'Сентябрь ','30.09.') <> [месяц] then replace ([месяц],'Сентябрь ','30.09.')
WHEN replace ([месяц],'Октябрь ','31.10.') <> [месяц] then replace ([месяц],'Октябрь ','31.10.')
WHEN replace ([месяц],'Ноябрь ','30.11.') <> [месяц] then replace ([месяц],'Ноябрь ','30.11.')
WHEN replace ([месяц],'Декабрь ','31.12.') <> [месяц] then replace ([месяц],'Декабрь ','31.12.')




else [месяц]

END


FROM [NEW].[dbo].[Table_2]


Я вижу только одну проблему с февралем в високосный год
24 сен 12, 13:13    [13212443]     Ответить | Цитировать Сообщить модератору
 Re: правсимв  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
мегельь,

если я прав, то чем не устраивает простой CAST()?
24 сен 12, 13:34    [13212613]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить