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