gpt4 book ai didi

sql - 传递包含空格的字符串时存储过程中出现语法错误

转载 作者:行者123 更新时间:2023-12-05 01:15:44 25 4
gpt4 key购买 nike

当我传递带有空格分隔值的 @param1 时,例如 N'here it is',出现语法错误。如果中间没有空格,比如N'hereitis',就没有这样的语法错误。有什么想法吗?

我是这样调用存储过程的,

EXEC @return_value = [dbo].[foo]
@param1 = N'here it is',
@param2 = 10,
@param3 = 10

错误信息是

message 7630, level 15, status 3, there is syntax error near 'here it is'.

 SELECT * 
FROM (
SELECT count(*) over() AS [Count],
*, ROW_NUMBER() OVER (order by t.indexfoo ASC ) AS rowNum
FROM dbo.tablefoo t
WHERE contains(t.col1,@param1)
OR contains(t.col2,@param1)
OR contains(t.col3,@param1)
) tt
WHERE tt.rowNum between @param2 and @param3 + @param2-1

如何解决这个问题?

最佳答案

很可能这个错误发生在 CONTAINS运营商。

SQL Server 期望多关键字将由 bool 运算符(ANDOR)分隔或用引号括起来。

WHERE CONTAINS(Name, ' "Mountain" OR "Road" ')

您必须拆分每个术语。

有关详细信息,请参阅 TSQL CONTAINS() MSDN 文档,特别是查看示例部分——特别有趣的可能是Item J. Using CONTAINS to verify a row insertion

要变通,我建议:

  • 尝试传入预先格式化的搜索词:' "here"AND "it"AND "is"'。我不确定这是否真的有效。

  • 将您的 nvarchar 作为 'here it is',在 split that string 之后的存储过程中构建一个新字符串在空间上,并构建一个格式化为 CONTAINS() 要求的新字符串。

关于sql - 传递包含空格的字符串时存储过程中出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4084194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com