成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL中返回計算表達式的函數

數據庫 SQL Server
SQL中的函數可以實現很多的功能,下面為您介紹一個SQL中返回計算表達式的函數,供您參考和學習,希望對您有所啟迪。

下面為您介紹一個SQL中返回計算表達式的函數,該函數可以計算加、減、乘、除,但是不能算冪,供您參考,希望對您學習SQL中的函數能有有所幫助。

 

  1. CREATE FUNCTION dbo.GetExp(@pstrExpress AS VARCHAR(8000))  
  2. RETURNS DECIMAL(18,6) AS  
  3. BEGIN  
  4. DECLARE @i INT,@j INT   
  5. DECLARE @c1 CHAR(1),@c2 CHAR(1),@c VARCHAR(100)  
  6. DECLARE @v1 DECIMAL(18,6),@v2 DECIMAL(18,6),@v DECIMAL(18,6)  
  7. DECLARE @t TABLE(ID INT IDENTITY(1,1),s VARCHAR(100))  
  8. DECLARE @s TABLE(ID INT IDENTITY(1,1),s VARCHAR(100))  
  9. DECLARE @sv TABLE(ID INT IDENTITY(1,1),v DECIMAL(18,6))  
  10.  
  11. SET @pstrExpress = REPLACE(@pstrExpress,' ','')  
  12. SELECT @i = 0,@j = LEN(@pstrExpress),@c2 = '',@c = '' 
  13. WHILE @i<@j  
  14. BEGIN  
  15.  SELECT @c1 = @c2,@i = @i+1  
  16.  SELECT @c2 = SUBSTRING(@pstrExpress,@i,1)  
  17.  IF CHARINDEX(@c2,'.0123456789') > 0 or (@c2 = '-' and @c1 IN('','*','-','+','/','('))  
  18.  BEGIN   SELECT @c = @c + @c2   CONTINUE  END  
  19.  IF @c <> ''  BEGIN INSERT @t(s)  SELECT @c SELECT @c = '' END  
  20.  IF CHARINDEX(@c2,')')>0  
  21.  BEGIN   
  22.    INSERT @t(s)  SELECT s FROM @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0) ORDER BY ID DESC  
  23.    DELETE @s WHERE ID >= ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0)   
  24.    CONTINUE  
  25.  END  
  26.  IF CHARINDEX(@c2,'+-)')>0  
  27.  BEGIN   
  28.    INSERT @t(s)  SELECT s FROM @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0) ORDER BY ID DESC  
  29.    DELETE @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0)   
  30.    IF @c2 <> ')' INSERT @s(s) SELECT @c2  
  31.    CONTINUE  
  32.  END  
  33.  IF CHARINDEX(@c2,'*/')>0  
  34.  BEGIN   
  35.    INSERT @t(s)  SELECT s FROM @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(','+','-')),0) ORDER BY ID DESC  
  36.    DELETE @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(','+','-')),0)   
  37.    INSERT  @s SELECT @c2  
  38.    CONTINUE  
  39.  END  
  40.  IF CHARINDEX(@c2,'(')>0 INSERT  @s SELECT @c2  
  41. END  
  42. IF @c <> '' INSERT @t(s) SELECT @c  
  43. INSERT @t(s)  SELECT s FROM @s ORDER BY ID DESC  
  44. SELECT @i = 0,@j = MAX(ID) FROM @t   
  45. WHILE @i < @j  
  46. BEGIN   
  47.  SELECT @i = @i + 1  
  48.  SELECT @c = s FROM @t WHERE ID = @i  
  49.  IF @c = '(' CONTINUE  
  50.  IF @c NOT IN('*','-','+','/')  BEGIN  INSERT @sv(v) SELECT CONVERT(float,@c) CONTINUE END  
  51.  SELECT @vv2 = v FROM @sv  DELETE @sv  WHERE ID = (SELECT MAX(ID) FROM @sv)  
  52.  SELECT @vv1 = v FROM @sv  DELETE @sv  WHERE ID = (SELECT MAX(ID) FROM @sv)  
  53.  SELECT @v = CASE @c WHEN '+' THEN @v1 + @v2 WHEN '-' THEN @v1 - @v2  
  54.                      WHEN '*' THEN @v1 * @v2 WHEN '/' THEN @v1 / @v2 END  
  55.  INSERT @sv(v) SELECT @v  
  56. END  
  57. SELECT @vv = v FROM @sv  
  58. RETURN @v  
  59. END 

 

 

【編輯推薦】

SQL中DATENAME函數的用法

SQL中循環語句的效果實例

SQL中類似For循環處理的實例

對存儲過程代替SQL語句的討論

SQL聚合函數之Avg 函數

 

責任編輯:段燃 來源: 互聯網
相關推薦

2011-05-30 16:11:46

Javascript

2024-03-25 13:46:12

C#Lambda編程

2022-09-09 00:25:48

Python工具安全

2022-09-08 11:35:45

Python表達式函數

2011-05-11 17:40:30

PHP正則表達式

2020-10-16 06:40:25

C++匿名函數

2010-11-16 14:53:02

Oracle游標表達式

2021-06-28 08:01:57

JS 函數表達式函數聲明

2010-11-12 13:20:31

SQL Server

2022-08-29 23:49:41

Python字符串代碼

2009-08-31 17:11:37

Lambda表達式

2024-10-17 17:03:43

SQL正則表達式MySQL

2014-01-05 17:41:09

PostgreSQL表達式

2017-08-01 00:19:15

Javascript函數函數聲明

2009-07-09 09:51:07

Lambda表達式C#

2023-11-02 18:45:00

Rust編程表達式

2009-03-16 14:01:24

正則表達式函數SQL

2020-11-04 09:23:57

Python

2022-01-14 07:56:39

C#動態查詢

2009-07-21 14:03:00

Scalaif表達式while循環
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91不卡在线| 精品国产网| 成人三级av| 国产欧美一区二区三区日本久久久 | 中文字幕啪啪 | 国产精品99久久久久久久久 | 男女在线免费观看 | 国内精品一区二区 | 一区二区三区免费 | 国产成人一区二区三区久久久 | 国产精品网址 | 欧州一区二区三区 | 亚洲高清视频一区二区 | 亚洲视频一区在线播放 | 在线观看不卡av | 精品亚洲一区二区三区 | 国产一级免费视频 | 国产成人一区二区三区 | 69精品久久久久久 | 欧美国产一区二区 | 亚洲在线一区 | 久久99国产精品 | 黄色a级一级片 | 日日骚网| 人人九九精 | 欧美精品在线播放 | 日韩欧美在线观看视频 | 中文字幕一区二区三区四区五区 | 日韩在线视频一区 | 久久精品一区二区三区四区 | 久久免费高清视频 | 日本中文字幕在线观看 | 亚洲欧洲成人av每日更新 | 精品一区二区久久 | 亚洲精品免费视频 | 亚洲色图综合 | 精品一区二区三区在线视频 | 视频一区二区在线观看 | 91亚洲精选 | 99色在线 | 成人免费共享视频 |