2013-03-11 1 views
0

@ 기호까지 클라이언트의 전자 메일 주소를 기반으로 SQL Server 2008의 저장 프로 시저에서 클라이언트의 정보를 요청하는 ASP.net이 있습니다. 이 소규모 조직에서 3 개월이 지나면 고객이 자주 변경되기 때문에 이메일 주소는 동일하게 유지됩니다.SQL Server 저장 프로 시저 전자 메일 확인

예. 이메일 주소가 [email protected] 인 고객은 3-4 개월 후에 계약서를 마치면 그 이메일 주소가 다른 사람에게 할당됩니다.

자, 여기 내 질문이 있습니다. 고객 정보를 찾으려면 저장 프로 시저에 obois_in4을 입력하고 Search 버튼을 누른 다음 저장 프로 시저를 원합니다. 전체 이메일을 입력하지 않기를 원하는 이유는 너무 길기 때문이며 둘째 입력 할 때 실수 할 수는 있지만 obois_in4과 같은 타이핑은 큰 문제가 아닙니다.

클라이언트를 이름으로 검색 할 수있는 코드를 작성했지만 클라이언트는 3-4 개월 후에 항상 변경되지만 전자 메일 주소는 동일하게 유지됩니다.

ALTER PROCEDURE [dbo].[sp_find_client_information] 
-- Add the parameters for the stored procedure here 
@client_email varchar (50) = null 
AS Declare @numOfRows int BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

-- Insert statements for procedure here 
SELECT @numOfRows = COUNT (*) 
    From helpdesk_clients 
Where --change first name and 
    client_firstName = @client_email or client_lastName = @client_email; 

begin 
if (@numOfRows = 0) 
    select @numOfRows; 
else if (@numOfRows = 1) 
select 
    client_id, 
    client_firstName, 
    client_lastName, 
    client_work_email, 
    client_work_phone, 
    client_work_phone_ext, 
    client_office, 
    dept_nom, 
    client_position 

from 
    helpdesk_clients join departments 
    on 
    helpdesk_clients.dept_id = departments.dept_id 
    where client_firstName like '%'[email protected]_email+'%'; 
end 
END 

이메일 주소는 항상이 경우 숫자 등 4에 의해 다음 다음 밑줄 _in 같은 부서 정보 기술의 이름과 다음 obois 시작합니다. 예 : [email protected]

답변

0

아무도이 문제를 조사하는 데 방해가되지 않습니다. 가장 좋은 방법은 우리가 문자열의 지정한 위치까지 문자열 내의 위치에서 시작하는 문자열을자를 수 SUBSTRING (expression ,start , length)으로 Substring()CharIndex()

을 사용하는 것입니다. CHARINDEX (expressionToFind ,expressionToSearch [ , start_location ])을 사용하면 주어진 문자열 내에서 문자의 위치를 ​​찾을 수 있습니다.

substring (work_email, 1, CHARINDEX('@', work_email)-1) = @work_email

이 매개 변수 [email protected]처럼하지 않는 것을 보장하고 [email protected]처럼 자신의 전체 이메일 주소를 입력 할 수있는 클라이언트를위한 큰 번거 로움, 그는 만 shwan.smith를 입력해야합니다, 스크립트는 shawn.smith에서 검색합니다 @ 표지판까지 [email protected]

@work_email 가정 저장 프로 시저에서

는 매개 변수이며 값이

select 
client_id, 
client_firstName, 
client_lastName, 
client_work_email, 
client_work_phone, 
client_work_phone_ext, 
client_office, 
dept_nom, 
client_position 
from 
helpdesk_clients join departments 
on 
helpdesk_clients.dept_id = departments.dept_id 
where substring (work_email, 1, CHARINDEX('@', work_email)-1) = @work_email; 

Select 성명에서 언급 한 모든 내용을 반환합니다 'shawn.smith'입니다입니다.

관련 문제