【发布时间】:2023-10-15 17:55:02
【问题描述】:
我有这个存储过程:
ALTER PROCEDURE [dbo].[OptimizedGetArticlePostAMP]
(@PostID int)
--[ OptimizedGetArticlePostAMP] 678161
-- 732490
AS
BEGIN
DECLARE @SectionId int, @datediff int
DECLARE @postdate datetime
SELECT
P.PostId, P.SectionID, P.PostName,
MP.MetaTitle, P.Postdate, P.PostAuthor, P.IsApproved,
MP.Metadescription, MP.Metakeywords,
P.TotalViews, P.Subject, P.FormattedBody,
MV.Isvideo, MV.VideoCode, MV.VideoCaption,
A.DrComment, A.SpanishURL, PS.RedirectUrl,
MP.Canonical as Canonical, PS.StatusId,
dbo.[ GetCommentCountForPost](@PostId) as TotalReplies,
PRD.StoryImage, PRD.StoryContent,
MH.LastModifiedDate,
REPLACE(LEFT(P.FormattedBody, CHARINDEX('</strong>', P.FormattedBody) - 1),'<p><strong>By','') <--This Line shows **error**
FROM
csposts P
LEFT JOIN
NewsletterDetails A ON (P.Postid = A.postid)
LEFT JOIN
PostStatus PS ON (PS.postid = p.postid)
LEFT JOIN
PostMetatags MP ON (P.postid = MP.Postid)
LEFT JOIN
postVideo MV ON (P.postid = MV.Postid)
LEFT JOIN
CSPostAttachments PA ON P.PostId = PA.PostId
AND PA.contenttype LIKE 'audio/mpeg'
AND PA.FILENAME LIKE '%.mp3'
AND PA.isremote = 1
LEFT JOIN
PostRelatedData PRD ON P.PostId = PRD.PostId
LEFT JOIN
PostReferences PR on P.PostId = PR.PostId
CROSS APPLY
(SELECT TOP 1 LastModifiedDate
FROM ArticleModifiedHistory
WHERE ArticleModifiedHistory.Postid = P.postid
ORDER BY LastModifiedDate desc) MH
WHERE
P.Postid = @Postid
END
由于我使用了 LEFT 函数,它显示以下错误:
参数数据类型 ntext 对左函数的参数 1 无效。
请让我知道我需要进行哪些更改才能使其运行。
【问题讨论】:
-
为什么不是
varchar(max)? -
你试过把
P.FormattedBody改成CAST(P.FormattedBody as nvarchar(max))吗? -
ntext、text和image数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。请改用nvarchar(max)、varchar(max)和varbinary(max)。 See details here -
谢谢大家...!!
标签: sql sql-server sql-server-2008 stored-procedures