0
原始代碼來自本網站,但不知何故,頁面丟失,所以我不能引用它。但這裏是原始代碼:無法創建SQL Server函數來測試格式
DECLARE @email_address VARCHAR(2000) = '[email protected]'
IF (
CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0
AND LEFT(LTRIM(@email_address),1) <> '@'
AND RIGHT(RTRIM(@email_address),1) <> '.'
AND CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address) > 1
AND LEN(LTRIM(RTRIM(@email_address))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1
AND CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3
AND (CHARINDEX('[email protected]',@email_address) = 0 AND CHARINDEX('..',@email_address) = 0)
)
print 'valid email address'
ELSE
print 'not valid'
從那以後,我打算寫一個函數,我可以調用測試格式。想象我想稍後使用它來測試Twitter和其他社交ID,我想我會讓它成爲接受刺痛以及測試格式的代碼。
這裏是我寫的:
CREATE FUNCTION [dbo].[TestForType](@strString VARCHAR(2000), @strFormat VARCHAR(2000))
RETURNS BIT
AS
BEGIN
--DECLARE @strString VARCHAR(2000)= '[email protected]'
DECLARE @email_address VARCHAR(2000)
--DECLARE @strFormat VARCHAR(2000) = 'email'
DECLARE @bitTrueFalse bit
SET @email_address [email protected]
--SET @bitTrueFalse = If(@strFormat = 'email') BEGIN
If(@strFormat = 'email') BEGIN
IF (@email_address <> '[email protected]'
AND CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0
AND LEFT(LTRIM(@email_address),1) <> '@'
AND RIGHT(RTRIM(@email_address),1) <> '.'
AND CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address) > 1
AND LEN(LTRIM(RTRIM(@email_address))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1
AND CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3
AND (CHARINDEX('[email protected]',@email_address) = 0 AND CHARINDEX('..',@email_address) = 0)
)
SET @bitTrueFalse = 1
ELSE
SET @bitTrueFalse = 0
END --END IF
ELSE
SET @bitTrueFalse = NULL
END --End IF
RETURN @bitTrueFalse
我得到這個錯誤:
Msg 156, Level 15, State 1, Procedure TestForType, Line 41
Incorrect syntax near the keyword 'RETURN'.
我不明白。我希望它返回@bitTrueFalse
的值。
請閱讀[如何對提問](HTTP://計算器。 com/help/how-to-ask)爲標題提供建議。請包括該語言(最好作爲標籤)。 – adamdc78 2015-03-03 00:25:29
「RETURN」(剛開始時關閉「BEGIN」)後,你缺少另一個'END' – 2015-03-03 06:02:23
一年多加晚了,表示感謝,但我感謝你。我不能給予attaboy分,但是,否則我會的。 – 2016-05-05 16:51:18