1. LIKE的基本用法
在 SQL 语句中,LIKE 是一种用于模糊匹配字符串的操作符。语法如下:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern;
其中,column_name 为要匹配的列名,table_name 为要查询的表名,pattern 为要匹配的模式。
模式中可以使用 %(百分号)和 _(下划线)来代替任意字符和单个字符。例如:
SELECT *
FROM customers
WHERE customerName LIKE 'a%';
以上 SQL 语句查询了所有以 "a" 开头的客户名称(注意,“a”和“%”之间没有空格)。
1.1 匹配任意字符
使用 %(百分号)来代替任意字符。例如:
SELECT *
FROM customers
WHERE customerName LIKE '%ail%';
以上 SQL 语句查询了所有客户名称中包含 "ail" 的客户。
1.2 匹配单个字符
使用 _(下划线)来代替单个字符。例如:
SELECT *
FROM customers
WHERE customerName LIKE '_en';
以上 SQL 语句查询了所有客户名称中以 "en" 结尾,第三个字符为任意字符的客户。
1.3 多个模式匹配
可以使用 OR 关键字来进行多个模式匹配。例如:
SELECT *
FROM customers
WHERE customerName LIKE 'a%' OR customerName LIKE 'b%';
以上 SQL 语句查询了所有以 "a" 或 "b" 开头的客户名称。
2. NOT LIKE 的使用
在 SQL 中,NOT LIKE 用于排除匹配的结果。例如:
SELECT *
FROM customers
WHERE customerName NOT LIKE '%ail%';
以上 SQL 语句查询了所有客户名称中不包含 "ail" 的客户。
3. 使用通配符的注意事项
在使用通配符时,需要注意以下几点:
3.1 模式不应以通配符开头
使用通配符时,应确保模式不以通配符开头,否则会大大降低查询速度。例如,以下查询会扫描整个表:
SELECT *
FROM customers
WHERE customerName LIKE '%en';
可以使用以下查询语句替代:
SELECT *
FROM customers
WHERE customerName LIKE '___en';
其中,___ 代表前三个字符是任意字符。
3.2 在模式中使用 []
可以在模式中使用 [] 来匹配指定范围内的字符。例如:
SELECT *
FROM products
WHERE productName LIKE '[C-F]%';
以上 SQL 语句查询了所有产品名称以 "C"、"D"、"E" 或 "F" 开头的产品。
3.3 在模式中使用 ^
在使用 [] 时,可以在方括号内使用 ^ 来表示排除的字符。例如:
SELECT *
FROM products
WHERE productName LIKE '[^C-F]%';
以上 SQL 语句查询了所有产品名称不以 "C"、"D"、"E" 或 "F" 开头的产品。
3.4 在模式中使用 [^]
在使用方括号时,可以使用 [^abc] 来排除 a、b、c 三个字符。例如:
SELECT *
FROM products
WHERE productName LIKE '[^a-m]%';
以上 SQL 语句查询了所有产品名称不以 "a" 到 "m" 之间的任何字符开头的产品。
4. 总结
LIKE 操作符是 SQL 语句中常用的一种操作符,可以用于模糊匹配字符串。使用通配符可以更加灵活的匹配字符串,但是在使用通配符时,需要注意模式不应以通配符开头,否则会降低查询速度。