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