Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Снова по stringam :c)  [new]
капп2004
Guest
1. Как, используя стандартные функции работы со строками в один SQL запрос выделить из строки число, если оно есть?
2. Функция, которая будет преобразовывать переданную ей строку к прописному регистру с заглавной первой буквой есть у кого-нить?
Заранее благодарен
12 дек 05, 14:56    [2163258]     Ответить | Цитировать Сообщить модератору
 Re: Снова по stringam :c)  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
1. Не думаю, что это просто. Можно сделать UDF, в которой использовать Regular Expressions.
2. Lower() & Upper()?
12 дек 05, 17:11    [2164134]     Ответить | Цитировать Сообщить модератору
 Re: Снова по stringam :c)  [new]
aag
Member

Откуда: Москва
Сообщений: 1955
Это зависит от того, как в этой строке отделены числа. Если как обычно - пробелами, то можно через charindex

create function fn_extractWordPos
(
	@Str		varchar(2000),
	@N		int,
	@WordSeparator	varchar(64)
)
returns	varchar(128)
begin
declare	@start	smallint,
	@end	smallint,
	@ResultWord	varchar(128)

	if @N <= 0
		return	NULL
	
	set @start = 1
	set @end = 1
	set @ResultWord = NULL

	while @end > 0 
	begin
		set @end = charindex(@WordSeparator, @Str, @end)
		set @N = @N - 1

		if @N = 0 
		begin
			if @end > @start
				set @ResultWord	= substring(@Str, @start, @end - @start)
			else if @end = 0 and @start > 0
				set @ResultWord	= substring(@Str, @start, datalength(@Str))
								
			break
		end
		if @end > 0
		begin
			set @end = @end + datalength(@WordSeparator)
			set @start = @end 
		end
	end
	return @ResultWord
end
После чего берем полученное слово и
if not like '%[^0-9]%' ... -- то число

Nobody faults but mine... (LZ)
12 дек 05, 17:30    [2164235]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить