首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将2列与SQL Server 2012中的CSV值进行比较

在SQL Server 2012中,可以使用以下方法将两列与CSV值进行比较:

  1. 使用STRING_SPLIT函数:SQL Server 2016及更高版本提供了STRING_SPLIT函数,可以将CSV值拆分为多个行。但在SQL Server 2012中,可以通过自定义函数或递归查询来模拟此功能。以下是一个示例:
代码语言:sql
复制
-- 创建一个自定义函数,将CSV值拆分为多个行
CREATE FUNCTION dbo.SplitString
(
    @String VARCHAR(MAX),
    @Delimiter CHAR(1)
)
RETURNS @Result TABLE (Value VARCHAR(MAX))
AS
BEGIN
    DECLARE @StartIndex INT, @EndIndex INT
    SET @StartIndex = 1
    SET @EndIndex = CHARINDEX(@Delimiter, @String)

    WHILE @EndIndex > 0
    BEGIN
        INSERT INTO @Result (Value)
        SELECT SUBSTRING(@String, @StartIndex, @EndIndex - @StartIndex)

        SET @StartIndex = @EndIndex + 1
        SET @EndIndex = CHARINDEX(@Delimiter, @String, @StartIndex)
    END

    INSERT INTO @Result (Value)
    SELECT SUBSTRING(@String, @StartIndex, LEN(@String) - @StartIndex + 1)

    RETURN
END

-- 使用自定义函数将CSV值拆分为多个行,并与另一列进行比较
SELECT t1.Column1, t2.Value
FROM Table1 t1
CROSS APPLY dbo.SplitString(t1.Column2, ',') t2
WHERE t1.Column1 = t2.Value
  1. 使用LIKE运算符:如果CSV值中的元素之间使用固定的分隔符(例如逗号),可以使用LIKE运算符进行比较。以下是一个示例:
代码语言:sql
复制
-- 使用LIKE运算符将CSV值与另一列进行比较
SELECT Column1, Column2
FROM Table1
WHERE ',' + Column2 + ',' LIKE '%,' + Column1 + ',%'

这将返回在CSV值中包含在另一列中的匹配项。

以上是在SQL Server 2012中将两列与CSV值进行比较的方法。请注意,这些方法适用于SQL Server 2012,但在其他版本中可能会有不同的实现方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券