You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中是否存在与MySQL IN()函数等效的函数?

在SQL Server中实现类似MySQL IN()的功能

当然有啦!SQL Server完全支持和MySQL里IN()函数功能几乎一样的语法,用法大同小异,直接就能满足你根据ID数组查询对应数据行的需求。

基础用法(和MySQL一致)

如果你的ID数组是固定的或者能直接拼接成SQL语句里的常量列表,直接用IN()就可以,示例代码如下:

-- 假设要查询ID为1、3、5的数据行
SELECT * 
FROM your_table 
WHERE id IN (1, 3, 5);

这里的id是你表中的主键/ID列,your_table替换成实际表名就行,和MySQL的写法几乎没区别。

处理动态ID数组的进阶场景

如果你的ID数组是前端动态传递的(比如不确定长度的列表),有两种更优雅的处理方式:

  • 使用表值参数(Table-Valued Parameter, TVP):这是SQL Server里处理批量参数的高效方式,适合ID数量较多的场景。你可以在应用程序端定义一个表类型的参数,把ID数组传入后直接关联查询,示例:
    -- 先创建一个表类型(只需创建一次)
    CREATE TYPE IdList AS TABLE (Id INT);
    
    -- 查询时使用
    DECLARE @ids IdList;
    INSERT INTO @ids VALUES (1), (3), (5); -- 这里可以替换为前端传入的批量ID
    
    SELECT t.*
    FROM your_table t
    JOIN @ids i ON t.id = i.Id;
    
  • 拆分字符串形式的ID列表:如果前端传递的是逗号分隔的字符串(比如'1,3,5'),可以用SQL Server 2016及以上版本提供的STRING_SPLIT()函数拆分后查询:
    SELECT t.*
    FROM your_table t
    JOIN STRING_SPLIT('1,3,5', ',') s 
      ON t.id = CAST(s.value AS INT);
    
    注意要把拆分后的value转换成和ID列一致的数据类型。

内容的提问来源于stack exchange,提问作者Alex Spelt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:49:03