我需要插入一個字符串轉換成SQL命令如何在C#命令中使用LIKE運算符?
search.CommandText = "SELECT * FROM Contacts WHERE Name like ' + @person + % + '";
它所在命令中使用LIKE
的正確方法嗎?
我需要插入一個字符串轉換成SQL命令如何在C#命令中使用LIKE運算符?
search.CommandText = "SELECT * FROM Contacts WHERE Name like ' + @person + % + '";
它所在命令中使用LIKE
的正確方法嗎?
應該是:
SELECT * FROM Contacts WHERE Name like @person + '%'
@person
是一個參數 - 你不需要它周圍的單引號。你只需要將它與%
連接起來,它應該有引號。
請記住:
"SELECT * FROM Contacts WHERE Name like @person"
,並有參數值包含%
(在C#連擊是容易理解)。%
,_
,[
和]
。使用語法:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
的"%"
標誌可用於定義通配符(失蹤的模式字母)之前和其後的模式。
例如:
LIKE '%xy'
會讓你任何與 'XY'LIKE '%xy%'
會得到你任何包含 'XY'LIKE 'xy%'
會得到你任何以 'XY'真棒! :D = P – user1667459
這是你的意思嗎?
searchPerson.CommandText = "SELECT * FROM Contacts WHERE Name LIKE '"+person+"%'";
這對[Sql Injection](http://en.wikipedia.org/wiki/SQL_injection)攻擊是開放的!天啊! – Kobi
呵呵是的。應該可能在答案中提到。我是gunna使用'得到它的工作,然後修復安全'藉口:) – Shadow
這就是爲什麼我使用參數LOL – user1667459
searchPerson.CommandText =
"SELECT * FROM Contacts WHERE Name like @person + '%'"
searchPerson.CommmandText = "SELECT * FROM Contacts WHERE Name like '" + @person + "%'";
可能不會編譯,除非實際上有一個*變量*稱爲'人'。(巧合的是,'@'在C#標識符之前有效 - 幸運!)。無論哪種方式 - 你改變參數化的命令潛在的安全風險:http://en.wikipedia.org/wiki/SQL_injection – Kobi
select * from Contacts WHERE Name like '%' + '"[email protected]+"' + '%'
select * from Contacts WHERE Name like '%' + '"[email protected]+"'
select * from Contacts WHERE Name like '"[email protected]+"' + '%'
這應該工作
"Select * from customer where FirstName LIKE '"+TextBox1.Text + '%'+ "' ";
如果字段類型爲nvarchar使用此代碼:
"select * from Contacts where name like N'%"+person+"%'"
「SELECT * FROM像CONCAT TABLE_NAME(@人,'%')「
我用過它。
嗨,歡迎來到StackOverflow。謝謝你的回答,但比「我用它」更多的解釋會更好 –
你正在使用什麼rdbms? MySQL,SQLServer,..? –