当前位置: 首页 > 面试题库 >

将字符串传递到SQL WHERE IN

上官正志
2023-03-14
问题内容

我正在查询页面上,用户在其中选择一个代表不同类型的值,每个值由一个ID标识。问题是使用WHERE IN方法从数据库中选择这些ID。

这是我的SQL语句

SELECT M.REG_NO, T.TYPE_ID 
    FROM MAIN AS M 
        INNER JOIN CLASSIFICATION AS C 
            ON M.REG_NO = C.REG_NO
        INNER JOIN TYPE AS T 
            ON T.TYPE_ID = C.TYPE_ID
    WHERE T.TYPE_ID IN (@Types)

它将适用于一个单一值,例如。46,但如果值放在方括号中则不是,例如。(46)或(‘46’),即IN的方式。

我使用的是Visual Studio,它会自动生成访问表适配器以获取值的方法,所以我认为我必须通过SQL来做到这一点。

我正在传递一个字符串,例如。类型=“ 46,267,2010”,进入适配器方法,该方法将字符串传递到SQL语句中的@Types中。

任何帮助将是巨大的。谢谢!


问题答案:

这是一个非常普遍的问题-不确定为什么TSQL尚未处理它。无论如何,我发现最适合我的解决方案是将变量转换为表,然后就可以在其上使用IN()了。

从函数开始:

CREATE Function [dbo].[ParseStringList]  (@StringArray nvarchar(max) )  
Returns @tbl_string Table  (ParsedString nvarchar(max))  As

BEGIN

DECLARE @end Int,
        @start Int

SET @stringArray =  @StringArray + ',' 
SET @start=1
SET @end=1

WHILE @end<Len(@StringArray)
    BEGIN
        SET @end = CharIndex(',', @StringArray, @end)
        INSERT INTO @tbl_string 
            SELECT
                Substring(@StringArray, @start, @end-@start)

        SET @start=@end+1
        SET @end = @end+1
    END

RETURN
END

然后使用该功能…

SELECT * 
FROM table
WHERE SomeFieldValue In (Select ParsedString From dbo.ParseStringList(@Types))


 类似资料:
  • 我试图在php脚本和c程序之间传递参数。我的php脚本如下所示 然后我想我的c程序返回给我一个字符串(但我真的不知道怎么做),你能帮忙吗?

  • 问题内容: 我正在尝试通过使用JSON格式的字符串初始化Javascript变量来加载数据表。如果我声明: 那么我的表将正确加载该行。 我尝试在脚本之前初始化Java字符串,然后将该对象传递给Javascript变量,如下所示: 我的表无法识别这一点,并且在尝试以这种方式传递行时无法加载该行。如何正确地将Java字符串传递给Javascript,以便我的表能够加载数据? 问题答案: 尝试使用引号。

  • 问题内容: 背景: 我创建了一个非常简单的前端,用户可以在其中输入字符串。输入并单击“检查”按钮后,我想将此字符串作为JSON传递给python字符串,它将在其中进行SQL查找。根据SQL外观,python脚本应传递一个布尔值,该值应更改?到✔或✘。 题: 一旦按下“检查”按钮作为JSON到Python脚本,然后如何将字符串从Python传递到HTML,将?更改为✔或✘,如何传递字符串? 研究:

  • 我是aws lambda和api网关的新手,我正在尝试向lambda函数传递一个json字符串。 但是,lambda不是用字符串调用的。 这是lambda。它获取一个对象作为输入,并返回类的字符串表示形式和对象的值。 api网关的映射模板是 api网关测试中的日志显示: 我希望json字符串被传递给lambda(作为字符串对象),但是TestMapping lambda返回的不是这个 如您所见,L

  • 我如何通过按一个按钮将变量day传递给apiInterface类? 片段FragJornadas,我想从这里将变量传递给@get in接口? TodaSadapter } 我要获取的url是: “server.php?action=getresultados&cmp=328&jor=1&tmp=2018/2019” 这是一个错误: java.lang.IllegalArgumentExceptio

  • 问题内容: 我在应用程序中有4个这样的字符串,我想传递给我的js文件 而我的javascript代码是 我只能得到$ a4字符串,而我不能得到其他字符串 我如何在php中传递这4个字符串并在javascript中设置这4个变量 谢谢; 问题答案: 将它们编码为JSON。 在PHP方面: 在JavaScript方面: 如果你想,,,并且是数字,而不是包含数字的字符串数组,只是JSON在发送之前解码在