Excel からレコードをインポートしていますが、重複を避けたいと考えています。ASP Classic では、データベースの重複をチェックする関数を作成しました。見つかった場合は、ユーザー名の末尾に番号を追加し、ユーザー名が一意かどうかを再度確認します。たとえば、petejones は petejones1 になります。残念ながら、データベースには約 15 万件のレコードがあり、一意性を検索するのに非常に時間がかかるため、このスクリプトは非常に低速です。T-SQL の SQL Server 2008 で直接同じことを行う方法はありますか? そのため、プロセス全体が非常に迅速になります。一意にするプロセスはありますか?
これが従来の ASP の関数です。これを行うためのより良い方法があることはわかっているので、私のスクリプトを笑わないでください。
FUNCTION CreateUniqueUsername(str)
SET DbConn = Server.CreateObject("ADODB.connection")
DbConn.Open DSN_LINK
nCounter = 0
Unique = ""
IF InStr(str, "@") > 0 THEN
strUsername = Left(str,InStr(str, "@")-1)
ELSE
strUsername = str
END IF
strUsername = FormatUsername(strUsername)
strSQL = "SELECT UserName FROM Member WHERE UserName = '" & strUsername & "';"
SET rs = DbConn.Execute(strSQL)
IF rs.EOF AND rs.BOF THEN
nFinalUsername = strUsername
ELSE
DO UNTIL Unique = true
nCounter = nCounter + 1
nFinalUsername = strUsername & nCounter
strSQL2 = "SELECT UserName FROM Member WHERE UserName = '" & nFinalUsername & " ' "
SET objRS = DbConn.Execute(strSQL2)
IF objRS.EOF THEN
Unique = true
ELSE
intCount = intCount
END IF
LOOP
objRS.Close
SET objRS = Nothing
END IF
rs.Close
SET rs = Nothing
SET DbConn = Nothing
CreateUniqueUsername = nFinalUsername
END FUNCTION
FUNCTION FormatUsername(str)
Dim OutStr
IF ISNULL(str) THEN EXIT FUNCTION
OutStr = lCase(Trim(str))
OutStr = Replace(OutStr, "’", "")
OutStr = Replace(OutStr, "”", "")
OutStr = Replace(OutStr, "'","")
OutStr = Replace(OutStr, "&","and")
OutStr = Replace(OutStr, "'", "")
OutStr = Replace(OutStr, "*", "")
OutStr = Replace(OutStr, ".", "")
OutStr = Replace(OutStr, ",", "")
OutStr = Replace(OutStr, CHR(34),"")
OutStr = Replace(OutStr, " ","")
OutStr = Replace(OutStr, "|","")
OutStr = Replace(OutStr, "&","")
OutStr = Replace(OutStr, "[","")
OutStr = Replace(OutStr, ";", "")
OutStr = Replace(OutStr, "]","")
OutStr = Replace(OutStr, "(","")
OutStr = Replace(OutStr, ")","")
OutStr = Replace(OutStr, "{","")
OutStr = Replace(OutStr, "}","")
OutStr = Replace(OutStr, ":","")
OutStr = Replace(OutStr, "/","")
OutStr = Replace(OutStr, "\","")
OutStr = Replace(OutStr, "?","")
OutStr = Replace(OutStr, "@","")
OutStr = Replace(OutStr, "!","")
OutStr = Replace(OutStr, "_","")
OutStr = Replace(OutStr, "''","")
OutStr = Replace(OutStr, "%","")
OutStr = Replace(OutStr, "#","")
FormatUsername = OutStr
END FUNCTION
私はまだSQLを学んでいるので、どんな支援も大歓迎です。