У меня есть скрипт t-sql, который извлекает участников нашего сайта, но у меня возникают проблемы с пользователями, которые использовали *, или цифры в названии компании.
У меня есть следующие данные, например:
''Dream A Little Dream''
***Unique Business Card/Sign/Logo Designs***
3D Visual Creations
50dollarbanner.com
etc..
У меня есть буквы алфавита в верхней части страницы, и пользователи могут нажать «A», например, и в нем перечислены все пользователи, начинающиеся с «A», есть ли способ, например, сделать еще один для «0» и в нем будут перечислены все участники, начинающиеся с цифр или странных символов:
Вот мой тестовый скрипт:
DECLARE @TotalPages INT
DECLARE @UserName varchar(50)
DECLARE @PG INT
DECLARE @PageSize INT
SET @UserName = 'Z'
SET @PG = 1
SET @PageSize = 70
BEGIN
SELECT @TotalPages = COUNT(*)/@PageSize
FROM Member
WHERE (sbuser.sf_GetDisplayName(FirstName, LastName, BusinessName, DisplayNameTypeID) LIKE @UserName + '%')
AND UserName IS NOT NULL;
WITH FindSBMembers AS
(
SELECT ROW_NUMBER() OVER(ORDER BY Claimed DESC, sbuser.sf_MemberHasAvatar(MemberID) DESC) AS RowNum,
MemberID, -- 1
UserName, -- 2
PrCity, -- 3
PrStateID, -- 4
sbuser.sf_MemberHasImages(MemberID) AS MemberHasImages, -- 5
sbuser.sf_MemberHasVideo(MemberID) AS MemberHasVideo, -- 6
sbuser.sf_MemberHasAudio(MemberID) AS MemberHasAudio, -- 7
sbuser.sf_GetDisplayName(FirstName, LastName, BusinessName, DisplayNameTypeID) AS DisplayName, -- 8
ProfileTypeID, -- 9
Zip, -- 10
PhoneNbr, -- 11
PrPhone, -- 12
Claimed, -- 13
@TotalPages AS TotalPages, -- 14
City -- 15
FROM Member
WHERE (sbuser.sf_GetDisplayName(FirstName, LastName, BusinessName, DisplayNameTypeID) LIKE @UserName + '%')
AND UserName IS NOT NULL
-- AND MemberID <> @MemberID
)
SELECT *
FROM FindSBMembers
WHERE RowNum BETWEEN (@PG - 1) * @PageSize AND @PG * @PageSize
ORDER BY Claimed DESC
END
Вот подробности включенного скрипта:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [sbuser].[sf_GetDisplayName](
@FirstName varchar(50),
@LastName varchar(50),
@BusinessName varchar(50),
@DisplayNameTypeID int)
RETURNS varchar(150) WITH schemabinding
AS
BEGIN
DECLARE @OUT varchar(150)
SET @OUT = ''
SET @FirstName = UPPER(LEFT(LTRIM(RTRIM(@FirstName)), 1)) + RIGHT(LTRIM(RTRIM(@FirstName)), LEN(LTRIM(RTRIM(@FirstName))) - 1)
SET @LastName = UPPER(LEFT(LTRIM(RTRIM(@LastName)), 1)) + RIGHT(LTRIM(RTRIM(@LastName)), LEN(LTRIM(RTRIM(@LastName))) - 1)
SET @BusinessName = UPPER(LEFT(LTRIM(RTRIM(@BusinessName)), 1)) + RIGHT(LTRIM(RTRIM(@BusinessName)), LEN(LTRIM(RTRIM(@BusinessName))) - 1)
IF @DisplayNameTypeID = 2 -- FIRST / LAST NAME
BEGIN
SET @OUT = @LastName + ', ' + @FirstName
END
IF @DisplayNameTypeID = 3 -- FIRST NAME / LAST INITIAL
BEGIN
SET @OUT = @FirstName + ' ' + LEFT(@LastName,1) + '.'
END
IF @DisplayNameTypeID = 4 -- BUSINESS NAME
BEGIN
SET @OUT = @BusinessName + ''
END
RETURN @OUT
END
Большое спасибо за вашу помощь.
С уважением,
Пол