使用下面的代碼塊提取前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.VarChar
或SqlDbType.NVarChar
(如果相應的列也是N...
如此)。
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消