Снова по stringam :c)

1. Как, используя стандартные функции работы со строками в один SQL запрос выделить из строки число, если оно есть?2. Функция, которая будет преобразовывать переданную ей строку к прописному регистру с заглавной первой буквой есть у кого-нить?Заранее благодарен
2 ответа

1. Не думаю, что это просто. Можно сделать UDF, в которой использовать Regular Expressions.2. Lower() & Upper()?


Это зависит от того, как в этой строке отделены числа. Если как обычно - пробелами, то можно через charindex
create function fn_extractWordPos
(
	@Str		varchar(<b>2000</b>),
	@N		int,
	@WordSeparator	varchar(<b>64</b>)
)
returns	varchar(<b>128</b>)
begin
declare	@start	smallint,
	@end	smallint,
	@ResultWord	varchar(<b>128</b>)

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

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

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