无法将字符串传递给存储过程中的 IN 子句
Cannot pass string to IN clause in stored procedure
我有以下带一个参数的存储过程,我需要在我的 IN
子句中使用它,但这不起作用。我在尝试时遇到此错误。
Conversion failed when converting the varchar value '1,2' to data type int
这是我的存储过程..
CREATE PROCEDURE [dbo].[p_GetSegment]
@SegmentIds nVarChar(20)
AS
BEGIN
SET NOCOUNT ON;
SELECT dbo.Segment.Name
FROM dbo.tbl_Category
INNER JOIN dbo.Segment ON dbo.tbl_Category.SegmentId
WHERE (dbo.Segment.Id IN (@SegmentIds))
我传入“1,2”。我怎样才能使这项工作?
在SQL Server 2016+中,您可以使用string_split()
:
WHERE dbo.Segment.Id IN (SELECT value FROM STRING_SPLIT(@SegmentIds, ','))
为此,您可以使用任何字符串拆分函数。你也可以只使用 `like:
where ',' + @SegmentIds + ',' like '%,' + convert(varchar(255), dbo.Segment.Id) + ',%'
我有以下带一个参数的存储过程,我需要在我的 IN
子句中使用它,但这不起作用。我在尝试时遇到此错误。
Conversion failed when converting the varchar value '1,2' to data type int
这是我的存储过程..
CREATE PROCEDURE [dbo].[p_GetSegment]
@SegmentIds nVarChar(20)
AS
BEGIN
SET NOCOUNT ON;
SELECT dbo.Segment.Name
FROM dbo.tbl_Category
INNER JOIN dbo.Segment ON dbo.tbl_Category.SegmentId
WHERE (dbo.Segment.Id IN (@SegmentIds))
我传入“1,2”。我怎样才能使这项工作?
在SQL Server 2016+中,您可以使用string_split()
:
WHERE dbo.Segment.Id IN (SELECT value FROM STRING_SPLIT(@SegmentIds, ','))
为此,您可以使用任何字符串拆分函数。你也可以只使用 `like:
where ',' + @SegmentIds + ',' like '%,' + convert(varchar(255), dbo.Segment.Id) + ',%'