C#中 SQL语句 带参数的like 查询怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中 SQL语句 带参数的like 查询怎么写相关的知识,希望对你有一定的参考价值。

参考技术A 是不是SQL语句
like啊
可以试试
select
*
from
A(表)
where
B(列)
like
'%2012%'(如果这列是日期,那么所有2012年的都会出来,比如201201,201202,201203。。。
。。。)
在C#中写SQL语句要注意一下那个规格格式
有小小变化
参考技术B SQL模糊查询,使用like比较字,加上SQL里的通配符,请参考以下:
--
1、LIKE'Mc%'
将搜索以字母
Mc
开头的所有字符串(如
McBadden)。
--
2、LIKE'%inger'
将搜索以字母
inger
结尾的所有字符串(如
Ringer、Stringer)。
--
3、LIKE'%en%'
将搜索在任何位置包含字母
en
的所有字符串(如
Bennet、Green、McBadden)。
--
4、LIKE'_heryl'
将搜索以字母
heryl
结尾的所有六个字母的名称(如
Cheryl、Sheryl)。
--
5、LIKE'[CK]ars[eo]n'
将搜索下列字符串:Carsen、Karsen、Carson

Karson(如
Carson)。
--
6、LIKE'[M-Z]inger'
将搜索以字符串
inger
结尾、以从
M

Z
的任何单个字母开头的所有名称(如
Ringer)。
--
7、LIKE'M[^c]%'
将搜索以字母
M
开头,并且第二个字母不是
c
的所有名称(如MacFeather)。
参考技术C tbname_truename要"+tbname_truename+"
这个是string连接的一种方式
eg:"a"+"b"="ab";
'"+tbname_truename+"'
tbname_truename这个应该是数据库字段对应的值
两个'
'是sql语句
select
*
from
table
where
name=‘名字’
只有在name是varchar的时候需要单引号

SQL Server参数化SQL语句中的like和in查询的语法(C#)

sql语句进行 like和in 参数化,按照正常的方式是无法实现的
//SqlParameter 会把where insert delete等字符原样的插入写入查询到sql语句中,而不会让这些关键字产生效果。。。。。。

我们一般的思维是:

Like参数化查询:
string sqlstmt = "select * from users where user_name like '%@word%' or mobile like '%@word%'";
SqlParameter[] Parameters=new SqlParameter[1];
Parameters[0] = new SqlParameter("@word", "123");

In参数化查询:
string sqlstmt = "select * from users where user_id in (@user_ids)";
SqlParameter[] Parameters = new SqlParameter[1];
Parameters[0] = new SqlParameter("@user_ids", "1001,1002,1006");
可是这样放在程序里面是无法执行的,即使不报错,也是搜索不出来结果的。

正确解法如下:

like 参数:
string sqlstmt = "select * from users where user_name like '%'+ @word + '%' or mobile like '%'+ @word + '%'";
SqlParameter[] Parameters=new SqlParameter[1];
Parameters[0] = new SqlParameter("@word", "123");

in 参数
string sqlstmt = "exec('select * from users where user_id in ('+@user_ids+')')";
string sqlstmt = $"select * from users where user_id in('string.Join("','",@user_ids)');//貌似这种写法也是可以的,
SqlParameter[] Parameters = new SqlParameter[1];
Parameters[0] = new SqlParameter("@user_ids", "1001,1002,1006");

原理解释:
SQL参数化查询,其实是可以在SQL的IDE(Microsoft SQL Server Management Studio)中测试的。
打开Microsoft SQL Server Management Studio,新建查询,在窗口中写入以下命令:


-- Like参数化查询命令
DECLARE @word VARCHAR(255);
SET @word='123';
SELECT * from users where user_name like '%'+@word+'%' or mobile like '%'+@word+'%';
这就是Like参数化查询的等效命令;

同理,以下是In参数话查询命令:
DECLARE @user_ids VARCHAR(255);
SET @user_ids='1001,1002,1006';
exec('select * from users where user_id in ('+@user_ids+')');

以上是关于C#中 SQL语句 带参数的like 查询怎么写的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server参数化SQL语句中的like和in查询的语法(C#)

SQL Server参数化SQL语句中的like和in查询的语法(C#)

关于C#中SQL查询语句的参数

PB数据窗口中SQL语句动态LIKE后边加参数如何加?

带有输入参数的动态sql模糊查询????

java中PreparedStatement执行带参数的sql语句如何实现模糊查询?