更新 - 請注意,我正努力通過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小時後)給予獎勵時,我會給予獎勵。 –