我正在根据以下情况从表变量中删除数据。
DELETE FROM @SampleTable WHERE Fname IN (@Fname)
在@Fname中,我有类似'abc','def','ghi'的值。
但是delete语句不会删除数据。 如果在此条件下通过SELECT语句,它将被删除。
答案 0 :(得分:2)
您可以将STRING_SPLIT()
和REPLACE()
用作
declare @data table (name varchar(45));
insert @data values
('abc'),('def'),('ghi'),('jkl');
select * from @data;
declare @var varchar(100) = '''abc'',''def'',''ghi''';
delete from @data
where name in(
select value
from string_split(replace(@var, '''', ''), ',')
);
select * from @data;
答案 1 :(得分:0)
我的事,你可以尝试这样的事情。
DECLARE @Query NVARCHAR(MAX)
SET @Query = 'DELETE FROM '+@SampleTable+' WHERE Fname IN ('+@Fname+')'
EXEC SP_EXECUTESQL @Query
答案 2 :(得分:0)
DECLARE @SampleTable TABLE (Fname VARCHAR(MAX)) DECLARE @Fname VARCHAR(MAX) ='abc,ghi' INSERT INTO @SampleTable(Fname)VALUES('abc'),('bb'),('ghi') DELETE FROM @SampleTable WHERE Fname IN ( SELECT value from STRING_SPLIT(@Fname,',')); SELECT * FROM @SampleTable GO
| Fname | | :---- | | bb |
db <>提琴here