2012-09-13 33 views
3

我需要插入一個字符串轉換成SQL命令如何在C#命令中使用LIKE運算符?

search.CommandText = "SELECT * FROM Contacts WHERE Name like ' + @person + % + '"; 

它所在命令中使用LIKE的正確方法嗎?

+3

你正在使用什麼rdbms? MySQL,SQLServer,..? –

回答

5

應該是:

SELECT * FROM Contacts WHERE Name like @person + '%' 

@person是一個參數 - 你不需要它周圍的單引號。你只需要將它與%連接起來,它應該有引號。

請記住:

  • 你也許會把它"SELECT * FROM Contacts WHERE Name like @person",並有參數值包含%(在C#連擊是容易理解)。
  • 您可能還想要轉義字符串中已有的其他通配符:%_[]
2

使用語法:

SELECT column_name(s) 
FROM table_name 
WHERE column_name LIKE pattern 

"%"標誌可用於定義通配符(失蹤的模式字母)之前和其後的模式。

例如:

  • LIKE '%xy'會讓你任何與 'XY'
  • LIKE '%xy%'會得到你任何包含 'XY'
  • LIKE 'xy%'會得到你任何以 'XY'
  • 結束
+0

真棒! :D = P – user1667459

1

這是你的意思嗎?

searchPerson.CommandText = "SELECT * FROM Contacts WHERE Name LIKE '"+person+"%'"; 
+1

這對[Sql Injection](http://en.wikipedia.org/wiki/SQL_injection)攻擊是開放的!天啊! – Kobi

+0

呵呵是的。應該可能在答案中提到。我是gunna使用'得到它的工作,然後修復安全'藉口:) – Shadow

+0

這就是爲什麼我使用參數LOL – user1667459

1
searchPerson.CommandText = 
    "SELECT * FROM Contacts WHERE Name like @person + '%'" 
0
searchPerson.CommmandText = "SELECT * FROM Contacts WHERE Name like '" + @person + "%'"; 
+0

可能不會編譯,除非實際上有一個*變量*稱爲'人'。(巧合的是,'@'在C#標識符之前有效 - 幸運!)。無論哪種方式 - 你改變參數化的命令潛在的安全風險:http://en.wikipedia.org/wiki/SQL_injection – Kobi

0

這應該工作

"Select * from customer where FirstName LIKE '"+TextBox1.Text + '%'+ "' "; 
0

如果字段類型爲nvarchar使用此代碼:

"select * from Contacts where name like N'%"+person+"%'" 
-1

「SELECT * FROM像CONCAT TABLE_NAME(@人,'%')「

我用過它。

+1

嗨,歡迎來到StackOverflow。謝謝你的回答,但比「我用它」更多的解釋會更好 –