[GBase 8s 教程]GBase 8s LIKE 子句
在数据库中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。
WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 "name = '李雷'"。
但是有时候我们需要获取 name 字段含有 "李" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *; 使用下划线 _ 字段来表示单个字符。
语法
以下是 SQL SELECT 语句使用 LIKE 子句从数据表中读取数据的通用语法:
SELECT colname1, colname2,...colnameN
FROM tablename
WHERE colname1LIKE condition1 [AND [OR]] colname2= 'somevalue'
你可以在 WHERE 子句中指定任何条件。
LIKE 通常与 % 或者 _ 一同使用,类似于一个元字符的搜索。
你可以使用 AND 或者 OR 指定一个或多个条件。
你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。
在命令提示符中使用 LIKE 子句
以下我们将在 SQL SELECT 命令中使用 WHERE...LIKE 子句来从数据表 company中读取数据。
实例
以下是我们将 company 表为示例:
DROP TABLE IF EXISTS COMPANY;
CREATE TABLE COMPANY(
ID SERIAL PRIMARY KEY,
NAME VARCHAR(40) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY DECIMAL(10,2),
JOIN_DATE DATE DEFAULT TODAY
);
INSERT INTO COMPANY VALUES (0, '李_雷', 37, '北京', 20000.00,'2005-05-13');
INSERT INTO COMPANY VALUES (0, '韩梅梅', 35, '天津', 16000.00, '2007-12-18');
INSERT INTO COMPANY VALUES (0, '林_涛', 36, '上海', 25000.00, '2006-01-04');
INSERT INTO COMPANY VALUES (0, '魏华', 36, '西安', 15000.00, '2007-08-30');
INSERT INTO COMPANY VALUES (0, '露茜', 34, '伦敦', 22000.00, '2008-08-08');
INSERT INTO COMPANY VALUES (0, '莉莉', 34, '伦敦', 22000.00, '2008-08-08');
INSERT INTO COMPANY VALUES (0, '吉姆', 35, '华盛顿', 16000.00, '2010-12-13');
INSERT INTO COMPANY VALUES (0, '汤姆', 36, '渥太华', 21000.00, '2010-04-30');
查询名字中带 "姆" 的结果:
select * from company where name like '_姆';
结果为:
id | name | age | address | salary | join_date | |
---|---|---|---|---|---|---|
7 | 吉姆 | 35 | 华盛顿 | 16000.00 | 2010-12-13 | |
8 | 汤姆 | 36 | 渥太华 | 21000.00 | 2010-04-30 |
查询"林_"开头的结果:
select * from company where name like '林\_%' escape '\';
结果为:
id | name | age | address | salary | join_date |
---|---|---|---|---|---|
3 | 林_涛 | 36 | 上海 | 25000.00 | 2006-01-04 |
需要注意的是,因为下划线_符号本身代表一个字符,要去除其替代含义,需要使用转义,并指明转义符escape '\'。