SQL Server 2005 如何在没有游标的情况下迭代 CSV 或表?

标签 sql sql-server

我需要返回传递给我的存储过程的用户电子邮件。可以将多个用户传递到存储过程中,并用逗号分隔。

我有一个可以使用的拆分表值函数

INSERT INTO @stTbl  
   SELECT value   
   FROM fn_Split(@UFID , ',')  

但当某些值可能不在表中时,就会出现问题,如果用户表中不存在,我需要从 CSV 列表中插入用户。

我不想使用光标,那么执行此类操作的最佳方法是什么?

最佳答案

INSERT INTO @stTbl (value)
SELECT value
FROM fn_Split(@UFID , ',') AS F
WHERE NOT EXISTS (
  SELECT NULL
  FROM @stTbl AS T
  WHERE T.value = F.value
)

关于SQL Server 2005 如何在没有游标的情况下迭代 CSV 或表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9979394/

相关文章:

sql - Count(*) 不同于 sys.partitions 中的行

php - 将文本列转换为时间

mysql - 在 where 中使用自定义函数左连接过滤空值

sql - 减少广泛的查询

sql - 如何下载网页并用SQL解析

mysql - 存储过程中的多案例选择

sql - 使用 .txt 批量插入,带或不带 PK 变量

c# - 将表名传递给 dbContext 并从 Entity Framework 中的表中获取值

sql - Informix SQL-这个简单的存储过程有什么问题&|触发语法?

sql - postgresql/sql - 加入(双?)两个表并按第二个表的列排序