|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
(t/sql) Функция, выдающая первое попавшееся число из строки |
|
Дата:
|
30 October 2008 |
|
Описание: |
Функция, выдающая с округлением первое попавшееся число Int из строки, совместимой с NVarChar(4000). |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=239](t/sql) Функция, выдающая первое попавшееся число из строки[/CODEPOST] |
| Оценка: |
Проголосовало 5 посетителей, средняя оценка 3.60 |
| Оценить: |
|
1 -- Функция, выдающая с округлением первое попавшееся число Int из строки, совместимой с NVarChar(4000).
2 CREATE FUNCTION [dbo].[iIntParse] (@sString varchar(4000))
3 RETURNS Int AS
4 BEGIN
5 DECLARE
6 @b AS Bit,
7 @iOut AS Int,
8 @i AS Int,
9 @iMax AS Int,
10 @s AS NVarChar(4000),
11 @sSum AS NVarChar(4000);
12 -- END DECLARE
13 -- ini
14 SET @b=0;
15 SET @i=0;
16 SET @iMax=Len(@sString);
17 SET @sSum='';
18 SET @sString=Replace(@sString,'+',' ')
19 -- end ini
20 WHILE @i<=@iMax BEGIN
21 SET @i=@i+1;
22 SET @s=Substring(@sString,@i,1)
23 IF Isnumeric(@s)=1 BEGIN
24 SET @b=1;
25 IF Len(Replace(Replace(Replace(@sSum,'-',''),'.',''),',',''))<10 SET @sSum=@sSum+@s ELSE SET @i=@iMax+1;
26 END; -- IF
27 IF IsNumeric(@s)=0 AND (IsNumeric(@sSum)=0 OR @sSum='-' OR @sSum='.' OR @sSum=',') BEGIN
28 SET @b=0;
29 SET @sSum='';
30 END; -- IF
31 IF Isnumeric(@s)=0 AND @b=1 SET @i=@iMax+1;
32 END; -- WHILE
33 IF IsNumeric(@sSum)=1 SET @iOut=Round(Cast(@sSum AS Decimal),0);
34 RETURN @iOut;
35 END -- FUNCTION
36 |
| Вернуться к списку исходников в категории ADO.NET |
|
|
 |
 |
 |
 |
|
|