【问题标题】:How to set into query string the Replace Statement in SQL?如何将 SQL 中的 Replace 语句设置为查询字符串?
【发布时间】:2015-07-23 02:18:19
【问题描述】:

这是我的问题.. 但我会举个例子让它更简单

我有一个名为 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

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

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

【问题讨论】:

  • 当您应该只使用参数化查询时,这似乎是修复 sql 注入问题的错误尝试。

标签: mysql sql str-replace


【解决方案1】:

你需要引用字符串中的所有单字,包括空字符串。所以,'' 变成了''''

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

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

【讨论】:

  • 嗨。谢谢你的帮助。我试过你的代码,没有遇到错误,但代码没有用空字符串替换引号/s。
  • @user3818587 。 . .在两个查询中,双引号周围都有空格。
  • 非常感谢,我删除了空格,它起作用了。 :) 非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2017-08-01
相关资源
最近更新 更多