[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 '_姆';

结果为:

idnameageaddresssalaryjoin_date
7吉姆35华盛顿16000.002010-12-13
8汤姆36渥太华21000.002010-04-30

查询"林_"开头的结果:

select * from company where name like '林\_%' escape '\';

结果为:

idnameageaddresssalaryjoin_date
3林_涛36上海25000.002006-01-04

需要注意的是,因为下划线_符号本身代表一个字符,要去除其替代含义,需要使用转义,并指明转义符escape '\'。

标签: gbase 8s, GBase, LIKE, 模糊查询

评论已关闭