Pregunta

the sql query below works great for all of the checks in the CASE WHEN, accept for some of the emails. When every i run the query checking for an email it works sometimes and sometimes it does not. I've done a RTRIM(LTRIM(m.Email)) and this does not work either. Is there something i need to do different when comparing emails?

exec BuildingPros.uspGetEmployees 1697,'Email','someone@somewhere.net'


alter proc BuildingPros.uspGetEmployees
@ProID INT,
@Where  VARCHAR(12) = NULL,
@Equals VARCHAR(25) = NULL
AS
      SELECT m.UserId,u.UserName,e.NonProID'ID',m.Email,c.FirstName'FName',c.LastName'LName',
                      ISNULL(c.Title,'NA')'Title',z.ZIPCode'Zip', p.Phone
        FROM     Person.UtbAddressesutbContact ac JOIN
                          Person.utbAddresses a ON ac.AddressID = a.AddressID JOIN 
                          Person.utbContact c ON ac.ContactID = c.ContactID JOIN
                          Person.utbZipCodes z ON z.ZipCodeID = a.ZipCodeID JOIN
                          Person.utbCitys city ON city.CityID = z.CityID JOIN
                          Person.utbContactUtbPhones cp ON c.ContactID = cp.ContactID JOIN
                          Person.utbPhones p ON p.PhoneID = cp.PhonesID JOIN
                          NonPros.utbNonProsUtbAddresses ea ON a.AddressID = ea.AddressID JOIN
                          aspnet_Membership m JOIN
                          NonPros.NonPros e ON m.UserId = e.UserID ON ea.NonProID = e.NonProID JOIN
                          BuildingPros.utbProfessionalsUtbNonPros pe ON e.NonProID = pe.NonProID JOIN
                          dbo.aspnet_Users u ON u.UserId = m.UserId
                WHERE
                CASE @Where
                        WHEN 'Email'    THEN m.Email
                        WHEN 'Name'     THEN c.LastName             
                        WHEN 'Zip'      THEN z.ZIPCode
                        WHEN 'ST'       THEN z.StateCD
                        WHEN 'Title'    THEN c.Title
                        WHEN 'TimeZone' THEN z.TimeZone
                        WHEN 'City'     THEN city.City
                END = @Equals
¿Fue útil?

Solución

I would suspect that it works for those emails that are shorter than 26 characters in length and that is fails on emails that are 26 characters or more in length. VARCHAR(25) is insufficient for an email address.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top