当前位置:数据库 > SQLServer >>

sql模糊查询语句详解

在sql中要实现模糊查询我们只要用到like就可以实现了,中间再带一些参数如% ? 等,下面来看个实例。
LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 操作符语法

SELECT column_name(s)FROM table_nameWHERE column_name LIKE

1> CREATE TABLE employee  (emp_no    INTEGER NOT NULL,
2>                         emp_fname CHAR(20) NOT NULL,
3>                         emp_lname CHAR(20) NOT NULL,
4>                         dept_no   CHAR(4) NULL)
5> GO
1> insert into employee values(1,  'Matthew', 'Smith',    'd3')
2> insert into employee values(2,  'Ann',     'Jones',    'd3')
3> insert into employee values(3,  'John',    'Barrimore','d1')
4> insert into employee values(4,  'James',   'James',    'd2')
5> insert into employee values(5,  'Elsa',    'Bertoni',  'd2')
6> insert into employee values(6,  'Elke',    'Hansel',   'd2')
7> insert into employee values(7,  'Sybill',  'Moser',    'd1')
8> GO


> SELECT * FROM employee WHERE emp_fname NOT LIKE '%n'
4> GO
emp_no      emp_fname            emp_lname            dept_no
----------- -------------------- -------------------- -------
          1 Matthew              Smith                d3
          4 James                James                d2
          5 Elsa                 Bertoni              d2
          6 Elke                 Hansel               d2
          7 Sybill               Moser                d1

 

实例二

2> SELECT *
3> FROM Employee
4> WHERE Name LIKE "%[k-l]%"
5> GO
ID          name       salary      start_date              city       region
----------- ---------- ----------- ----------------------- ---------- ------
          3 Celia            24020 1996-12-03 00:00:00.000 Toronto    W
          4 Linda            40620 1997-11-04 00:00:00.000 New York   N
          7 Alison           90620 2000-08-07 00:00:00.000 New York   W

 

关于like %%

# %代表任意多个字符

select * from user where username like '%huxiao';

select * from user where username like 'huxiao%';

select * from user where username like '%huxiao%';

# %代表一个字符

select * from user where username like '_';

select * from user where username like '______';

select * from user where username like 'huxia_';

select * from user where username like 'h_xiao';


# 如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用

select username from gg_user where username like '%xiao/_%' escape '/';
select username from gg_user where username like '%xiao/%%' escape '/';

关于通配符

'A_Z': 所有以 'A' 起头,另一个任何值的字原,且以 'Z' 为结尾的字串。 'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字原,而不是一个字原)。
'ABC%': 所有以 'ABC' 起头的字串。举例来说,'ABCD' 和 'ABCABC' 都符合这个套式。
'%XYZ': 所有以 'XYZ' 结尾的字串。举例来说,'WXYZ' 和 'ZZXYZ' 都符合这个套式。
'%AN%': 所有含有 'AN' 这个套式的字串。举例来说, 'LOS ANGELES' 和 'SAN FRANCISCO' 都符合这个套式。

在 SQL 中,可使用以下通配符:

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单

 

补充:数据库,Mssql
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,