Home  >  Article  >  Database  >  sql模糊查询语句详解

sql模糊查询语句详解

WBOY
WBOYOriginal
2016-06-07 17:48:182351browse

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

不在字符列中的任何单

 

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn