【发布时间】:2015-07-08 15:37:38
【问题描述】:
我想从 asp.net C# 中获取 .csv 数据作为单独的记录回发到表中,并将顺序作为优先列表。
Value = 'first,2,end'
应按该顺序插入到 SQL Server 表中。
源表具有可以在存储过程中硬编码的附加列。
我有一个 Split 函数,它返回一个表变量,但无法弄清楚如何将返回的值与辅助数据一起返回到源表中。
我的桌子是这样的:
Id int
PositionId int
Name varchar
ListOrder int
Score int
ScoreNotes nvarchar
isrequired int
我的 SQL 是:
INSERT INTO Skills (PositionId, Name, ListOrder, Score, ScoreNotes, isrequired)
SELECT
@PositionId,
(select positionVal, skill from dbo.fn_split ('first,sec,last', ',') ),
null,
null,
@isrequired)
【问题讨论】:
-
关系数据库没有记录顺序的真正概念。通常,表的无序视图会按照记录的插入顺序显示记录。然而,这只是一个巧合,因为这个顺序倾向于匹配自动增量/标识主键,并且倾向于匹配磁盘上的页面顺序。它恰好是有效的。但是,有各种条件可以使数据库在显示记录时更改此隐式顺序。如果您关心订单,您必须在表中有一列指示订单应该是什么。
-
除非您的 sql server 版本非常旧(2005 或更低),否则您应该使用表值参数并在您的 c# 代码中执行拆分字符串。
标签: c# sql asp.net sql-server csv