다음과 같은 2 개의 선택적 매개 변수가있는 저장 프로 시저가 있습니다. @Zip이라는 선택적 매개 변수 중 하나를 확인해야합니다. 즉,이 저장 프로 시저를 실행할 때 사용자가 올바른 미국 우편 번호를 입력했는지 확인해야합니다. 아래의 저장 프로 시저에서와 같이 정규 표현식을 사용해 보았지만 작동하지 않았습니다. 이것을 어떻게 할 수 있는지 알려주십시오. 고맙습니다.SQL Server 저장 프로 시저에서 미국 우편 번호의 유효성을 검사해야합니다.
CREATE PROCEDURE usp_GetDetails
(
@Name varchar(255) = null, @Zip int = null
)
as
begin
SELECT DISTINCT
[Name],[Address1],[Address2],[City],[Zip]
FROM AddressTable
WHERE
(@Name IS NULL
OR AddressTable.[Name] LIKE '%' + @Name + '%'
)
AND (@Zip IS NULL
OR AddressTable.[Zip] = (RegexMatch (@Zip, '^\d{5}(\-\d{4})?$'))
)
올바른 형식인지, 아니면 실제 우편 번호인지 실제로 확인 하시겠습니까? 5 + 4 형식이기 때문에 그것이 진짜라는 것을 의미하지는 않습니다. 또한 나는 그것을 INT로 사용하지 않을 것입니다. 그것은 5 + 4와 함께 작동하지 않을 것이고, 그것은 또한 선두 0을 떨어 뜨릴 것입니다. –
AFAIK SQL Server.R u에는 'RegexMatch' 기능이 없으므로'CLR '을 사용하여 함수를 사용할 수 있습니까? – praveen
Aaron 저는 varchar로 @Zip을 전달했고 작동했습니다. 고맙습니다. 실제 우편 번호인지 아닌지에 대해 걱정하지 않습니다. 주소록에서 일치하는 레코드를 가져오고 싶습니다. – user1164164