欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

sql模糊查询语句详解

程序员文章站 2022-06-10 20:37:27
...
在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 %%

# %代表任意多个字符

* 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]

不在字符列中的任何单