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