首页 > 解决方案 > 语法错误;访问 SQL Server 的 VBA 函数

问题描述

我正在将大型 MS Access 应用程序转换为几乎完全在 SQL Server 上运行,以提高性能,因为 Access 数据库很古老而且速度极慢。因此,我正在努力将 VBA 函数重新创建为 SQL 函数。SQL Server 到处都给我语法错误,我试图理解为什么,这里是 VBA:

Function AlphaNum(prodno As String)
Dim i As Long
If Len(prodno) = 0 Then Exit Function
For i = 1 To Len(prodno)
    If Mid(prodno, i, 1) Like "[0-9a-z]" Then AlphaNum = AlphaNum & Mid(prodno, i, 1)
Next i
If IsNumeric(AlphaNum) Then
    While Left(AlphaNum, 1) = "0"
        AlphaNum = Mid(AlphaNum, 2)
    Wend
End If
End Function

我已经用 SQL 走了这么远。我当然也不是这方面的专家,有什么想法吗?

CREATE FUNCTION dbo.[NAL_AlphaNum]
( 
@prodno varchar(10)
)
RETURNS VarChar(10)

BEGIN
    DECLARE @counter INT,
            @AlphaNum varchar(10)
    SET @counter='1'

    CASE WHEN Len(@prodno) = 0 THEN EXIT 

    WHILE @counter < Len(@prodno)
    BEGIN
        CASE WHEN Mid(@prodno, i, 1) LIKE '[0-9a-z]'
        THEN @AlphaNum =  @AlphaNum + Mid(@prodno, i, 1)
   SET @counter = @counter + 1
        END

    CASE WHEN IsNumeric(@AlphaNum) THEN
        WHILE Left(@AlphaNum, 1) = '0'
            @AlphaNum = Mid(@AlphaNum, 2)
            END

    RETURN @AlphaNum
END;

先感谢您。

标签: sqlvbasql-server-2008ms-access

解决方案


推荐阅读