C#SQLite参数化选择使用LIKE

Ada*_*amC 16 c# sqlite system.data.sqlite

我正在尝试做一个SQL查询,如

SELECT * FROM [TABLE] WHERE hostname LIKE '%myhostname%';
Run Code Online (Sandbox Code Playgroud)

这在纯SQL中工作正常,但是当我在C#中使用System.Data.SQLite时,它只适用于文字,而不是参数,例如

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE '%@host%'";
...
command.Parameters.AddWithValue("@host", "myhostname");
Run Code Online (Sandbox Code Playgroud)

这不会返回任何结果.

Mar*_*ers 27

你不能这样做.参数必须是完整的值 - 它不仅仅是SQL中的字符串替换.你可以这样做:

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE @host";
...
command.Parameters.AddWithValue("@host", "%myhostname%");
Run Code Online (Sandbox Code Playgroud)

  • `string sel ="SELECT*FROM [TABLE]其中主机名如'%'+ @ host +'%'";`也可以. (5认同)
  • @Donnie,你的陈述有效,但我不得不用`||'而不是`+`来连接 (4认同)

Kas*_*Kas 9

最简单的方法是使用'||'

使用 :

const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName || '%' ";
Run Code Online (Sandbox Code Playgroud)

代替:

const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName%";
Run Code Online (Sandbox Code Playgroud)

我已在这里回答