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]),' ','-'))
これにより、次のような出力が生成されます
ここで、すべての UriComputed 値を で終了したいと思います'/'
。これは、「テキストのない」URI が // のように終了するという事実を除いて、計算フィールドに追加することで簡単に実現できますが+ '/'
、これは発生したくありません。
計算フィールドに入れることができる sql は非常に限られているため (そして、これらの制限の範囲を実際には知りません)、これを追加する方法をここで尋ねたいと思いました。
基本的に、画像の出力を
/a/login/ /a/announcements/ /a/ /
これを行うための私の最も近い試みは次のとおりです。
isnull(convert(varchar(MAX),nullif(len(coalesce([UriText],[Name])),0)),'/')
これは一種の混乱を招き、「/」で終了する必要がある場合は数字を追加し、必要な場合は「/」を追加します。必要なのは反対です(つまり、長さが0の場合は「/」、 '' それ以外は)
インライン if またはそのようなものがあれば、基本的にそれを使用できますが、それについてはわかりません。
ありがとうございました!