日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL中返回計算表達式的函數(shù)

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

 
 
 
  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. SET @pstrExpress = REPLACE(@pstrExpress,' ','')
  11. SELECT @i = 0,@j = LEN(@pstrExpress),@c2 = '',@c = ''
  12. WHILE @i<@j
  13. BEGIN
  14.  SELECT @c1 = @c2,@i = @i+1
  15.  SELECT @c2 = SUBSTRING(@pstrExpress,@i,1)
  16.  IF CHARINDEX(@c2,'.0123456789') > 0 or (@c2 = '-' and @c1 IN('','*','-','+','/','('))
  17.  BEGIN   SELECT @c = @c + @c2   CONTINUE  END
  18.  IF @c <> ''  BEGIN INSERT @t(s)  SELECT @c SELECT @c = '' END
  19.  IF CHARINDEX(@c2,')')>0
  20.  BEGIN 
  21.    INSERT @t(s)  SELECT s FROM @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0) ORDER BY ID DESC
  22.    DELETE @s WHERE ID >= ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0) 
  23.    CONTINUE
  24.  END
  25.  IF CHARINDEX(@c2,'+-)')>0
  26.  BEGIN 
  27.    INSERT @t(s)  SELECT s FROM @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0) ORDER BY ID DESC
  28.    DELETE @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(')),0) 
  29.    IF @c2 <> ')' INSERT @s(s) SELECT @c2
  30.    CONTINUE
  31.  END
  32.  IF CHARINDEX(@c2,'*/')>0
  33.  BEGIN 
  34.    INSERT @t(s)  SELECT s FROM @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(','+','-')),0) ORDER BY ID DESC
  35.    DELETE @s WHERE ID > ISNULL((SELECT MAX(ID) FROM @s WHERE s IN('(','+','-')),0) 
  36.    INSERT  @s SELECT @c2
  37.    CONTINUE
  38.  END
  39.  IF CHARINDEX(@c2,'(')>0 INSERT  @s SELECT @c2
  40. END
  41. IF @c <> '' INSERT @t(s) SELECT @c
  42. INSERT @t(s)  SELECT s FROM @s ORDER BY ID DESC
  43. SELECT @i = 0,@j = MAX(ID) FROM @t 
  44. WHILE @i < @j
  45. BEGIN 
  46.  SELECT @i = @i + 1
  47.  SELECT @c = s FROM @t WHERE ID = @i
  48.  IF @c = '(' CONTINUE
  49.  IF @c NOT IN('*','-','+','/')  BEGIN  INSERT @sv(v) SELECT CONVERT(float,@c) CONTINUE END
  50.  SELECT @vv2 = v FROM @sv  DELETE @sv  WHERE ID = (SELECT MAX(ID) FROM @sv)
  51.  SELECT @vv1 = v FROM @sv  DELETE @sv  WHERE ID = (SELECT MAX(ID) FROM @sv)
  52.  SELECT @v = CASE @c WHEN '+' THEN @v1 + @v2 WHEN '-' THEN @v1 - @v2
  53.                      WHEN '*' THEN @v1 * @v2 WHEN '/' THEN @v1 / @v2 END
  54.  INSERT @sv(v) SELECT @v
  55. END
  56. SELECT @vv = v FROM @sv
  57. RETURN @v
  58. END

名稱欄目:SQL中返回計算表達式的函數(shù)
標題路徑:http://www.5511xx.com/article/dpjcosj.html