Sql server 拆分SQL server 2008并删除
我找不到如何在SQL中使用split函数的结果。它返回一个表,我不知道如何使用“foreach”这样的函数来选择每个返回数据 查看拆分函数:Sql server 拆分SQL server 2008并删除,sql-server,Sql Server,我找不到如何在SQL中使用split函数的结果。它返回一个表,我不知道如何使用“foreach”这样的函数来选择每个返回数据 查看拆分函数: ALTER FUNCTION [dbo].[Split] (@separator char(1), @value varchar(512)) RETURNS table AS RETURN ( WITH Pieces(pn, start, stop) AS ( SELECT 1, 1, CHARINDEX(@separator, @va
ALTER FUNCTION [dbo].[Split] (@separator char(1), @value varchar(512))
RETURNS table
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@separator, @value)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@separator, @value, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT pn AS Id,
SUBSTRING(@value, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS Data
FROM Pieces
)
它返回以下内容:
@separator = ','
@value = '13,14,15'
Id Data
1 13
2 14
3 15
然后我想做这样一件事:
DELETE FROM myTable
WHERE OneColumnInMyTable = @OneColumnInMyTable AND @ImportantValue = @Data
@数据对应于分割返回的每个值数据
目的是:
foreach(Data in ReturnOfMySplitFunction)
{
DELETE FROM myTable
WHERE OneColumnInMyTable = @OneColumnInMyTable AND @ImportantValue = Data
}
你有什么办法吗?使用sql server时是否可能?
谢谢您可以使用拆分功能执行类似操作
DELETE
FROM myTable
WHERE OneColumnInMyTable = @OneColumnInMyTable
AND @ImportantValue IN (
SELECT Data
FROM dbo.Split(',', @Data)
)
在这里,我假设您的
@Data
包含如下值-@Data='11、12、14、15'
请尝试以下脚本:
Delete A
FROM MYTABLE A
JOIN DBO.Split(@separator, @value) B ON B.DATA=@Data AND @ImportantValue = B.DATA
Where A.OneColumnInMyTable = @OneColumnInMyTable
如果有人想做同样的事情,我会把我的代码:
DECLARE @categories varchar(512),
@GroupingId int,
@Separator char
SET @Separator = ','
SET @categories = '12,24,33'
SET @GroupingId = '69241'
DELETE FROM RefAssoThematic
WHERE GroupingId = @GroupingId
AND ThematicId IN (SELECT Data FROM
dbo.split(@Separator,@Categories))