Sql server SQL Server-如何选择在拆分列中记录我的值

Sql server SQL Server-如何选择在拆分列中记录我的值,sql-server,stored-procedures,split,Sql Server,Stored Procedures,Split,这是我想要的结果: 我编写了一个存储过程: ALTER PROCEDURE [dbo].[test_Split] @item INT AS CREATE TABLE #temp ( Id INT, Name NVARCHAR(50), List NVARCHAR(100) ) INSERT INTO #temp VALUES (1, 'John', '1,2,4,6,7'), (2,

这是我想要的结果:

我编写了一个存储过程:

ALTER PROCEDURE [dbo].[test_Split] 
    @item INT
AS
    CREATE TABLE #temp
    (
         Id INT, 
         Name NVARCHAR(50), 
         List NVARCHAR(100)
    )

    INSERT INTO #temp 
    VALUES (1, 'John', '1,2,4,6,7'), (2, 'Fox', '7,23,42,10,17'),
           (3, 'Rose', '51,72,14,16,37'), (4, 'Alex', '1,22,84,56,47')

    SELECT * 
    FROM #temp
当我执行
test\u Split
时,我会得到屏幕截图中显示的结果

当我通过
@item=1
(任意数字)时,我希望得到与屏幕截图右侧类似的结果(
列表
列包含我的值)

没有函数有什么方法可以做到这一点吗?

只需添加

where List like + '%' + @item + '%'
所以

请注意,这将查找存在1的所有行。区分1和15等数字的唯一方法是搜索逗号

select * 
from #temp
where 
List like + '%,' + @item + ',%'
or List like + @item + ',%'
or List like + '%,' + @item
使用拆分函数和
内部联接
更明智。
我会退房的

我是这样想的,但是当
List
include value
11
或其他bumber include
1
value时。请参阅我的edit@M.Rashford。特别是最近一次查询是阅读您的更新。我试着让
列表
列至少有1个
字符=)听起来不错。我提供的功能链接非常好,如果你不是在2016年雪人使用2014版!
select * 
from #temp
where 
List like + '%,' + @item + ',%'
or List like + @item + ',%'
or List like + '%,' + @item