CREATE TABLE [dbo].[MembershipModule](
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL,
[ParentId] [uniqueidentifier] NULL,
[TargetId] [int] NULL,
[WebContentId] [uniqueidentifier] NULL,
[Name] [varchar](35) NOT NULL,
[NameUpper] AS (isnull(upper([Name]),'')) PERSISTED NOT NULL,
[UriPrefix] [varchar](max) NULL,
[UriText] [varchar](max) NULL,
[UriComputed] AS ??? PERSISTED,
[Description] [varchar](100) NULL,
[Created] [date] NOT NULL,
[Modified] [datetime2](7) NOT NULL,
[MenuItem] [bit] NOT NULL,
[Enabled] [bit] NOT NULL,
[Position] [smallint] NULL,
CONSTRAINT [PK_MembershipModule] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Пока что поле UriComputed вычисляется так:
lower(replace(isnull([UriPrefix],'/')+coalesce([UriText],[Name]),' ','-'))
Это производит вывод, подобный следующему
![Results](https://i.stack.imgur.com/QWXna.jpg)
Теперь я бы хотел завершить все значения UriComputed с '/'
. Этого легко достичь, добавив + '/'
к вычисляемому полю, за исключением того факта, что «безтекстовый» uris будет завершен как //, чего я не хочу.
, поскольку sql, который я могу поместить в вычисляемое поле, весьма ограничен (и я действительно не знаю степень этих ограничений), я решил спросить здесь, как добавить это.
в основном я хочу, чтобы вывод на изображении был
/a/login/
/a/announcements/
/a/
/
Моя ближайшая попытка сделать это была:
isnull(convert(varchar(MAX),nullif(len(coalesce([UriText],[Name])),0)),'/')
Что делает вид беспорядка, и добавляет число, если оно должно оканчиваться на «/», и добавляет «/», когда это необходимо, мне нужно наоборот (то есть, «/», когда длина равно 0, '' в противном случае)
Если есть встроенный вариант, или что-то подобное, я мог бы использовать его, но в основном я не знаю об этом.
Спасибо!