如何将SQL中的Replace语句设置到查询字符串中?

How to set into query string the Replace Statement in SQL?

这是我的问题..但我会展示示例以使其更简单

我有一个名为 usp_Replace 的存储过程。此 sp 将用空格替换引号。 这是未将其设置为查询字符串的原始查询..

CREATE PROCEDURE usp_Replace 
@desc varchar(50)

AS
BEGIN

    SET NOCOUNT ON;



SELECT '' + Replace(REPLACE(REPLACE(@desc, CHAR(13), ''), CHAR(10), ''),'"','') + ''

END

但是.. 我想将 select 语句设置为查询字符串,因为出于某种原因我将不得不使用条件语句但不会显示它,因为它不是问题的一部分。

这里..

ALTER PROCEDURE usp_Replace
@desc varchar(50)

AS
BEGIN

    SET NOCOUNT ON;

DECLARE @query nvarchar(max)
DECLARE @condition nvarchar(max)

SET @condition = null
SET @query = ' SELECT '' + Replace(REPLACE(REPLACE('''+@desc+''', CHAR(13), ''), CHAR(10), ''),''"'','') + '' '

    SET @query = @query + ISNULL(@condition,'') 
    EXEC sp_executesql @query 

END

我在这方面遇到错误,导致有未闭合的引号。 我真的对如何以及在何处放置单引号有疑问。

如果您遇到此问题或任何问题,请提供帮助links/suggestions。我会很高兴了解它。谢谢

您需要将字符串中的所有单引号括起来,包括空字符串。所以,'' 变成 '''':

SET @query = 'SELECT Replace(REPLACE(REPLACE(@desc, CHAR(13), ''''), CHAR(10), ''''),'' " '', '''')  '

我不确定空字符串在开头和结尾做了什么,所以我只是删除了它们。