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

Откуда:
Сообщений: 257
Добрый день.

Подскажите, пожалуйста, например, у меня есть строка

США. НХЛ

как мне отбросить все до точки, т.е должно остаться НХЛ
пока додумался только до этого, но так как данные разные то и параметры в сабстринг тоже будет разными, а как их вычислять для каждой строки, чтобы универсально было не могу(
select SUBSTRING(@a, 5, 5);

Подскажите, плизз..
18 ноя 13, 17:08    [15149880]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
sdet
Member

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

Создайте функцию с входными параметрами, внутри которой substring и любые другие манипуляции
18 ноя 13, 17:18    [15149976]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
Престарелый заяц
Guest
Declare @str varchar(20)
set @str ='США. НХЛ'
select Substring(@str,CHARINDEX('.',@str)+1,LEN(@str)-CHARINDEX('.',@str))
18 ноя 13, 17:22    [15149998]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
user87
Member

Откуда:
Сообщений: 257
Спасибо большое!
18 ноя 13, 17:23    [15150000]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
o-o
Guest
учитывает случай, если точки нет вообще;
в случае "более одной точки" выбирает после первой встретившейся:

declare @t table (s nvarchar(100)); 
insert into @t values (N'США. НХЛ'), (N'США НХЛ'), (N'.США НХЛ'), (N'США НХЛ.'), (N'США. НХЛ.');

select s, 
       CHARINDEX(N'.', s) as ["."'s position], 
       SUBSTRING(s, isnull(nullif(CHARINDEX(N'.', s), 0), len(s)) + 1, len(s)) as sub
from @t;
------------------------------
s	"."'s position	sub
США. НХЛ	4	 НХЛ
США НХЛ	0	
.США НХЛ	1	США НХЛ
США НХЛ.	8	
США. НХЛ.	4	 НХЛ.
18 ноя 13, 17:26    [15150018]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
Sergey S
Member

Откуда: Киев
Сообщений: 215
DECLARE @T  VarChar(32) = 'США. НХЛ', @N  INT = 0
SELECT  @N = CHARINDEX ('.',@T)+1
SELECT  SUBSTRING(@T,@N,LEN(@T)-@N+1)
18 ноя 13, 17:27    [15150025]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
Sergey S
Member

Откуда: Киев
Сообщений: 215
Опоздал, и мой вариант хуже :)
18 ноя 13, 17:28    [15150033]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
o-o
Guest
прикольная расцветочка,
а MS нормально раскрашивает после одинарной кавычки, ибо видит, что она внутри квадратных скобок
18 ноя 13, 17:30    [15150049]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
user87
Member

Откуда:
Сообщений: 257
Всем большое спасибо
18 ноя 13, 17:45    [15150155]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DECLARE @S VARCHAR(100)='США. НХЛ';

SELECT STUFF(@S,1,CHARINDEX('.',@S),'');
18 ноя 13, 17:47    [15150167]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
sdet
Member

Откуда:
Сообщений: 463
o-o,

А если строка будет содержать trailing spaces len() даст не правильный результат
Лучше datalengh
18 ноя 13, 17:48    [15150171]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
sdet
Member

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

И не забудьте оформить через функцию, чтобы не было дупликации кода
18 ноя 13, 17:52    [15150188]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
sdet
o-o,

А если строка будет содержать trailing spaces len() даст не правильный результат
Лучше datalengh
Зачем нужна длина, если надо отпилить только начало строки?
18 ноя 13, 17:53    [15150189]     Ответить | Цитировать Сообщить модератору
 Re: строковые функции  [new]
sdet
Member

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

Согласен, можно не использовать
18 ноя 13, 17:58    [15150220]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить