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

Откуда:
Сообщений: 294
Нужно из строки "Публикуемые сообщения должны соответствовать «правилам» форума" выбрать только слово правилам без кавычек !?

Использую функции
SUBSTRING(RTRIM(Request.Name),CHARINDEX('«',Request.Name)+1,CHARINDEX('»',RTRIM(Request.Name))-1) AS 'Reg',

но возвращает: правилам» с последней кавычкой.

Как от нее избавиться ? Спасибо.
31 янв 14, 14:24    [15500600]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
miksoft
Member

Откуда:
Сообщений: 38497
Что за функция CHARINDEX?

Попробуйте так:
SUBSTRING(Request.Name, LOCATE('«',Request.Name)+1, LOCATE('»',Request.Name,LOCATE('«',Request.Name))-LOCATE('«',Request.Name)) AS 'Reg'
31 янв 14, 15:18    [15501029]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

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

CHARINDEX - Ищет в выражении другое выражение и возвращает его начальную позицию, если оно найдено.

ругается на команду LOCATE

'LOCATE' is not a recognized built-in function name.
31 янв 14, 16:03    [15501301]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
miksoft
Member

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

тогда у вас не MySQL.
31 янв 14, 16:03    [15501305]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

Откуда:
Сообщений: 294
Aleks_Aleks
miksoft,

у меня


microsoft sql server management studio
31 янв 14, 16:08    [15501326]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
miksoft
Member

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

Тогда я перенесу топик.
Но попробуйте использовать CHARINDEX вместо LOCATE, возможно, получится.

Модератор: Тема перенесена из форума "MySQL".


Сообщение было отредактировано: 31 янв 14, 16:10
31 янв 14, 16:10    [15501333]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

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

если изменить с LOCATE на CHARINDEX - работает но кавычка остается
31 янв 14, 16:21    [15501398]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
если изменить с LOCATE на CHARINDEX - работает но кавычка остается

А уменьшить еще на одну позицию длину выбираемой подстроки духу не хватает ?
31 янв 14, 16:23    [15501411]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Dmitri4
Member

Откуда: Москва
Сообщений: 123
Aleks_Aleks
Нужно из строки "Публикуемые сообщения должны соответствовать «правилам» форума" выбрать только слово правилам без кавычек !?

Использую функции
SUBSTRING(RTRIM(Request.Name),CHARINDEX('«',Request.Name)+1,CHARINDEX('»',RTRIM(Request.Name))-1) AS 'Reg',

но возвращает: правилам» с последней кавычкой.

Как от нее избавиться ? Спасибо.



DECLARE @message nvarchar(255) = '"Публикуемые сообщения должны соответствовать «правилам» форума"'

SELECT SUBSTRING(@message,CHARINDEX('«',@message)+1,CHARINDEX('»',@message)-CHARINDEX('«',@message)-1)
31 янв 14, 16:28    [15501448]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
icprog
Member

Откуда:
Сообщений: 166
Aleks_Aleks,
Так?
SELECT SUBSTRING(RTRIM(Request.Name),CHARINDEX('«',Request.Name)+1,len(Request.Name)-CHARINDEX('»',RTRIM(Request.Name))+1) AS 'Reg'
31 янв 14, 16:29    [15501452]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
miksoft
Member

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

Сработает неправильно, если в тексте встретится закрывающая кавычка раньше, чем открывающая.
31 янв 14, 16:30    [15501468]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Dmitri4
Member

Откуда: Москва
Сообщений: 123
miksoft
Dmitri4,

Сработает неправильно, если в тексте встретится закрывающая кавычка раньше, чем открывающая.


Согласен, я просто решил поставленную задачу. Если автор скажет что ваше замечание имеет место быть, то напишу иначе.
31 янв 14, 16:31    [15501479]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
prog882
Guest
Aleks_Aleks,

declare @text varchar(max) = 'Публикуемые сообщения должны соответствовать «правилам» форума'

;with q as (select @text as otxt, substring(@text,charindex('«',@text)+1,len(@text)-charindex('«',@text)) as ntxt)
select otxt, substring(ntxt,1,charindex('»',ntxt)-1) as result from q
31 янв 14, 16:35    [15501516]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
miksoft
Member

Откуда:
Сообщений: 38497
Dmitri4
miksoft
Dmitri4,

Сработает неправильно, если в тексте встретится закрывающая кавычка раньше, чем открывающая.
Согласен, я просто решил поставленную задачу. Если автор скажет что ваше замечание имеет место быть, то напишу иначе.
Мы программисты или где?
Нельзя же полагаться на буквальную формулировку задачи, надо и соломки подстелить, там где скользко. Иначе можно было бы написать SELECT 'правилам', формально это решает поставленную задачу.
31 янв 14, 16:36    [15501521]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

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

Возвращает только первую букву от названия
31 янв 14, 16:36    [15501524]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

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

Все работает как надо, поставленная задача решена!

Спасибо!!!
31 янв 14, 16:38    [15501544]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Dmitri4
Member

Откуда: Москва
Сообщений: 123
Aleks_Aleks
Dmitri4,

Все работает как надо, поставленная задача решена!

Спасибо!!!


Пожалуйста, но обратите внимание на сообщение miksoft -

miksoft
Сработает неправильно, если в тексте встретится закрывающая кавычка раньше, чем открывающая.


Возможно стоит чуть глубже обдумать решение?
31 янв 14, 16:40    [15501565]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

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

Так тоже правильно и работает, но в два действия...

Предложенный метод Dmitri4, больше подходит.

Спасибо за помощь ваш метод тоже где нить пригодится.
31 янв 14, 16:42    [15501582]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Aleks_Aleks
Member

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

Я просмотрел получаемые результаты, такая ситуация не возникнет.
31 янв 14, 16:43    [15501590]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Dmitri4
Member

Откуда: Москва
Сообщений: 123
Aleks_Aleks,

Продукт ваш, решать вам ;)
31 янв 14, 16:46    [15501606]     Ответить | Цитировать Сообщить модератору
 Re: Удаление пробелов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleks_Aleks
Я просмотрел получаемые результаты, такая ситуация не возникнет.

Так тоже считается, что работает ?

DECLARE @message nvarchar(255) = N'"Публикуемые сообщения должны соответствовать «прав»илам» форума"'
SELECT SUBSTRING(@message,CHARINDEX(N'«',@message)+1,CHARINDEX(N'»',@message)-CHARINDEX(N'«',@message)-1)
31 янв 14, 16:47    [15501612]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить