亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選擇TOP 5僅在通過代碼調用時返回一行,其中同一腳本在SQL Server中返回5行

選擇TOP 5僅在通過代碼調用時返回一行,其中同一腳本在SQL Server中返回5行

C#
瀟瀟雨雨 2021-05-12 17:42:26
使用下面的代碼塊提取前5條記錄時,與在SQL Sever 2008中運行相同的腳本相比,我得到的結果截然不同。DataTable results = new DataTable();string cmdTxt = String.Format("select top 5 ID, NAME from TABLE where ID like @ID or NAME like @NAME order by ID asc");using (SqlCommand cmd = new SqlCommand(cmdTxt, Butch.connection)){    cmd.Parameters.Add("@ID", SqlDbType.Char, 15).Value = IdBox.Text + "%";    cmd.Parameters.Add("@NAME", SqlDbType.Char, 65).Value = IdBox.Text + "%";    using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))           adapter.Fill(results); }例如,將參數'0'傳遞到IdBox中,結果ID為'01'的結果為一行,但是在SQL Server中,ID為'000001','000002','000003','000004'的結果返回5行,'000005'。傳遞“ 00”將返回我的代碼中的零行,但是從SQL Server中返回相同的5行。如果我通過'00000',我將從代碼中獲得與從SQL服務器獲得的結果相同的結果。無論如何,有沒有讓我的代碼返回與SQL查詢相同的結果?我試圖在代碼參數中使用更多的通配符,以防它只針對一個字符進行檢查,但這是行不通的。我在使用NVarChar SqlDataType的其他地方也有相同的代碼,但是我不知道為什么它在這里不起作用。
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

SqlDbType.Char對應于CHAR,如果需要,將其空白填充為恰好給定的長度。

您的查詢最終像是這樣:

select top 5 ID, NAME from TABLE where ID like '0%             ' or NAME like '%                                                                ' order by ID asc

而且該模式將不匹配。

嘗試SqlDbType.VarCharSqlDbType.NVarChar(如果相應的列也是N...如此)。


查看完整回答
反對 回復 2021-05-21
  • 1 回答
  • 0 關注
  • 141 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號