2011-05-08 184 views
1

當我使用這個字符串作爲一個SQL命令字符串編譯器給我任何錯誤:錯誤轉換數據類型爲varchar爲bigint

string sql = "SELECT * FROM Students WHERE StudentNo='" + T_No.Text + "'"; 

但是,如果我用這個字符串(包括「%」字符),它說: 「錯誤轉換數據類型爲varchar爲bigint」:

string sql = "SELECT * FROM Students WHERE StudentNo='%" + T_No.Text + "%'"; 

我要爲了我的語句中使用‘%’改變什麼?

+0

使用參數化查詢。 – 2011-05-08 17:27:39

回答

2
string sql = "SELECT * FROM Students WHERE convert(nvarchar,StudentNo) LIKE '%" + T_No.Text + "%'"; 

但是請注意,這是低效的。

+1

無需轉換爲字符串。 'like'自動執行,爲什麼'nvarchar'而不是'varchar'如果字符串只包含數字呢? – 2011-05-08 17:28:23

+0

它的工作原理非常感謝。但是,這背後的邏輯是什麼? – 2011-05-08 17:31:34

+0

@Martin給出了這個問題,我認爲明確的轉換對於使@gcx在這裏理解問題更有用。但是你對nvarchar說得對,這是多餘的。 – magma 2011-05-08 17:34:35

相關問題