gpt4 book ai didi

c# - SQL 存储过程 IN 子句 varchar 数组

转载 作者:行者123 更新时间:2023-12-02 13:45:06 26 4
gpt4 key购买 nike

我有一个 C# 程序,想要为存储过程提供一个参数。我的 C# 程序中的字符串类似于“'Food','Clothes','Blood'”。

ALTER PROCEDURE [dbo].[GetLocations]
@longMax float =100,
@longMin float=0,
@latMax float=100,
@latMin float=0,
@categoryFilter char(200) = ''
AS
BEGIN
SET NOCOUNT ON;

SELECT *
FROM dbo.Locations
WHERE longitude BETWEEN @longMin AND @longMax
AND latitude BETWEEN @latMin AND @latMax
AND subCategory in (@categoryFilter)
END

结果应该给我 3 个条目,但结果是空的。我尝试用另外两个 ' 来转义参数,但结果没有任何变化。

它适用于其他列上的 int 值,但不适用于字符。

如果有人能帮忙,那就太好了:)

最佳答案

您将得到一个空白结果集,因为 in 子句 适用于数据集。您正在传递一个包含 200 个单词的字符串。您的查询实际上是在比较 subCategory 和 CategoryFilter

您可以通过提供如下设置在 Management Studio 中显式尝试

SELECT *
FROM dbo.Locations
WHERE longitude BETWEEN @longMin AND @longMax
AND latitude BETWEEN @latMin AND @latMax
AND subCategory in ('abc','bcd','cde');

abc-您的第一个类别过滤器,类似地 bcd 您的第二个类别过滤器,依此类推。如果 @categoryfilter 中有一组用逗号 (,) 分隔的数据,则首先拆分该字符串,然后使用 IN Clause

关于c# - SQL 存储过程 IN 子句 varchar 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17923186/

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