1. 背景
在搜索數(shù)據(jù)庫中的數(shù)據(jù)時,我們經常會用到模糊查詢扮碧,在模糊查詢中趟章,我們需要了解一些通配符。
2.SQL中的通配符
在搜索數(shù)據(jù)庫中的數(shù)據(jù)時慎王,SQL 通配符可以替代一個或多個字符蚓土。SQL 通配符必須與 LIKE 運算符一起使用。在 SQL 中柬祠,可使用以下通配符:
通配符 | 描述 |
---|---|
% | 替代一個或多個字符 |
_ | 僅替代一個字符 |
[charlist] | 字符列中的任何單一字符 |
[^charlist]或者[!charlist] | 不在字符列中的任何單一字符 |
3.實例
原始的表 (用在例子中的):
Persons 表:
ID | name | age | sex | address |
---|---|---|---|---|
1 | 張三 | 18 | 男 | 上海市浦東新區(qū)三林鎮(zhèn)三林路158號666 |
2 | 李四 | 20 | 男 | 上海市黃浦區(qū)中山南路888號 |
3 | 王五 | 19 | 女 | 湖北省武漢市漢陽區(qū) |
4 | 趙六 | 22 | 女 | 湖北省黃岡市麻城市 |
3.1.使用 % 通配符
現(xiàn)在北戏,我們希望從上面的 "Persons" 表中選取居住在以 "上海市" 開始的城市里的人:我們可以使用下面的 SELECT 語句:
SELECT * FROM Persons WHERE address LIKE '上海市%'
期望結果:
ID | name | age | sex | address |
---|---|---|---|---|
1 | 張三 | 18 | 男 | 上海市浦東新區(qū)三林鎮(zhèn)三林路158號666 |
2 | 李四 | 20 | 男 | 上海市黃浦區(qū)中山南路888號 |
3.2.使用 % 通配符
接下來负芋,我們希望從 "Persons" 表中選取居住在包含 "武漢市" 的人漫蛔。我們可以使用下面的 SELECT 語句:
SELECT * FROM Persons WHERE address LIKE '%武漢市%'
期望結果:
ID | name | age | sex | address |
---|---|---|---|---|
3 | 王五 | 19 | 女 | 湖北省武漢市漢陽區(qū) |
3.3.使用 _ 通配符
現(xiàn)在,我們希望從上面的 "Persons" 表中選取名字的第一個字符之后是 "六" 的人旧蛾。我們可以使用下面的 SELECT 語句:
SELECT * FROM Persons WHERE name LIKE '_六'
期望結果:
ID | name | age | sex | address |
---|---|---|---|---|
4 | 趙六 | 22 | 女 | 湖北省黃岡市麻城市 |
3.4.使用 [charlist]通配符
現(xiàn)在莽龟,我們希望從上面的 "Persons" 表中選取名字以"張","王" 的人。我們可以使用下面的 SELECT 語句:
SELECT * FROM Persons WHERE name like ‘[張王]%’
期望結果:
ID | name | age | sex | address |
---|---|---|---|---|
1 | 張三 | 18 | 男 | 上海市浦東新區(qū)三林鎮(zhèn)三林路158號666 |
3 | 王五 | 19 | 女 | 湖北省武漢市漢陽區(qū) |
3.5.使用 [!charlist]通配符
現(xiàn)在锨天,我們希望從上面的 "Persons" 表中選取名字不以"張","王" 的人毯盈。我們可以使用下面的 SELECT 語句:
SELECT * FROM Persons WHERE name like ‘[!張王]%’
期望結果:
ID | name | age | sex | address |
---|---|---|---|---|
2 | 李四 | 20 | 男 | 上海市黃浦區(qū)中山南路888號 |
4 | 趙六 | 22 | 女 | 湖北省黃岡市麻城市 |
4.特殊字符的查詢
在模糊查詢中,可能我們所需要匹配的字符就是特殊字符病袄,例如:p_% 以p_開頭的字符
5.1默認轉義
SELECT * FROM table1 WHERE cloum1 LIKE 'p\_%';
5.2使用ESCAPE關鍵字定義轉義符
SELECT * FROM table1 WHERE cloum1 LIKE 'p/_%' ESCAPE '/';