更新 - 请注意,我正努力通过SQL 2012解决方案解决此挑战。在GridView更新期间删除字符
我正在试图找出一个SQL难题,我确信有一个简单的解决方案,但我现在正在旋转我的轮子。我试图在gridview中使用一个字段,我需要首次输入一个长文件名,并在更新过程中删除文件名左侧的所有六个字符。 GridView中其余的字段已经被输入,所以这不是一个INSERT场景,而是一个UPDATE操作。我已经想出了这个(左)的基本命令,但我需要做的是让页面后面的代码(我假设与SQL代码)以这种格式的文件名:
这是代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="line" HeaderText="Line" SortExpression="line" InsertVisible="False" />
<asp:BoundField DataField="data" HeaderText="Data" SortExpression="data" />
<asp:BoundField DataField="new_data" HeaderText="New Data" SortExpression="new_data" />
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
输出的代码看起来是这样的......
线 数据 新数据
.............. .................................................. 。 .................................................. ..........
131024_000000-A_blah_de_blah_1of12.pdf 131024_000000-A_blah_de_blah_1of12.rtf
131024_000000-A_blah_de_blah_2of12。PDF
131024_000000-A_blah_de_blah_2of12.rtf
131025_000000-A_blah_de_blah_3of12.pdf
等等....
什么我试图用做这是为了通过SQL找到一种方法,将数据列中的文件名称放在后面,将前六位数字右侧的文件名切掉,然后将其写入“new_data”列。
这是我已经试过:
UPDATE [dbo].[left_test]
SET [new_data] =
(SELECT LEFT(Data,6)
FROM [dbo].[left_test])
WHERE [data] = @data;
GO
这产生以下错误:
Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
INSERT INTO dbo.left_test NEW_DATA(数据) SELECT LEFT(数据,6)DBO .left_test
由于我没有用过这个场景,所以我没有想到如何在这个GridView中引入更新语句,并利用左边命令(如果这是需要的话)。我是否创建存储过程并在Gridview更新时调用它,或者将代码添加到SQL UPDATE代码中间的ASP页面中?
如果需要更多信息,请告诉我。
为了让我可以学习这一点以备将来参考,你可以在类似的情况下再次解释我需要记住的东西(理论上的)吗? –
我在ssms中运行查询...我会说这是一个常见问题,并且很容易在ssms中找到。 – afzalulh
这个伎俩!当网站允许我(大约6小时后)给予奖励时,我会给予奖励。 –