SQL 中 BETWEEN AND 用于字符串的理解
在 SQL 中,BETWEEN AND 关键字可以用在数值和日期类型上,非常好理解。同时也可以用于字符串类型,它用于选择在两个指定值之间的数据,包括边界值。本文主要总结一下BETWEEN AND
用于string
类型字符串的要点
基本语法
SELECT column_name
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
column_name
:要筛选的列名。value1
和value2
:指定的两个值,value1
必须小于或等于value2
。
字符串比较规则
- 字符串的比较是基于字符的
ASCII
值。 - 比较是从左到右逐个字符进行的,直到找到不同的字符为止。
- 如果一个字符串是另一个字符串的前缀,较短的字符串会被认为较小。
示例
假设有一个表 employees,其中有一个列 last_name,我们想找出 last_name 在 ‘A’ 和 ‘F’ 之间的所有记录。
SELECT first_name, last_name
FROM employees
WHERE last_name BETWEEN 'A' AND 'M';
这个查询将返回所有 last_name 以字母 A 到 M 开头的员工记录。
重要 :假设有一张表,里面有一列 date_marking
,是字符串类型,看下面这段sql:
select *
from table
where date_marking between '2024-1' and '2024-12'
很多同学凭直觉认为在找1月-12月的数据,但实际上这是字符串类型,从前向后匹配,最后只能找到10,11,12 这3个月的数据。
注意事项
本文例子均在mysql数据库编码规则 utf8mb4_general_ci
- 大小写敏感
- 如果数据库是大小写敏感的,‘A’ 和 ‘a’ 会被视为不同的值。
- 如果数据库是大小写不敏感的,‘A’ 和 ‘a’ 会被视为相同的值。
- 排序规则
- 不同的数据库可能有不同的排序规则,这会影响字符串的比较结果。