SQL_STUDY:5.LIKE 和 通配符

本文详细介绍了SQL中LIKE操作符的使用方法,包括各种通配符(%、_、[charlist])的应用场景和示例,展示了如何在WHERE子句中搜索指定模式的数据。

摘要:

  1. like 加 ‘%ss%’
  2. not like
  3. mybatis 中的使用 concat
  4. 通配符

SQL LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。


LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 操作符语法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

现在,我们希望从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE 'N%'

接下来,我们希望从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE '%g'
SELECT * FROM Persons
WHERE City LIKE '%lon%'

mybatis的使用

concat 进行拼接

concat(concat (’%’,#{foldername}),’%’)

foldername like concat(concat ('%',#{foldername}),'%')

SQL 通配符

SQL 通配符

在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。

SQL 通配符必须与 LIKE 运算符一起使用。

在 SQL 中,可使用以下通配符:

通配符描述
%替代一个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符
[^charlist] 或者 [!charlist]不在字符列中的任何单一字符

原始的表 (用在例子中的):

Persons 表:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

使用 % 通配符

现在,我们希望从上面的 “Persons” 表中选取居住在以 “Ne” 开始的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE 'Ne%'

结果集:
Id LastName FirstName Address City
2 Bush George Fifth Avenue New York
例子 2

接下来,我们希望从 “Persons” 表中选取居住在包含 “lond” 的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE '%lond%'

结果集:
Id LastName FirstName Address City
1 Adams John Oxford Street London

使用 _ 通配符

例子 1
现在,我们希望从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'

结果集:
Id LastName FirstName Address City
2 Bush George Fifth Avenue New York
例子 2
接下来,我们希望从 “Persons” 表中选取的这条记录的姓氏以 “C” 开头,然后是一个任意字符,然后是 “r”,然后是任意字符,然后是 “er”:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE LastName LIKE 'C_r_er'

结果集:
Id LastName FirstName Address City
3 Carter Thomas Changan Street Beijing

使用 [charlist] 通配符

例子 1
现在,我们希望从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE '[ALN]%'

结果集:
Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
例子 2
现在,我们希望从上面的 “Persons” 表中选取居住的城市不以 “A” 或 “L” 或 “N” 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'

结果集:
Id LastName FirstName Address City
3 Carter Thomas Changan Street Beijing

### 如何在 CentOS 7 使用 `find` 命令批量删除指定范围的文件 在 CentOS 7 中,可以使用 `find` 命令结合正则表达式来匹配指定范围内的文件并删除。以下是一个完整的解决方案: #### 解决方案 `find` 命令可以通过 `-name` 参数匹配文件名模式,并通过 `-exec` 或者 `-delete` 参数执行删除操作。对于 `zentao_20250609021301.sql.gz` 到 `zentao_20250609025801.sql.gz` 格式的文件,可以利用通配符或者正则表达式进行匹配。 以下是具体的命令: ```bash find /path/to/directory -type f -name "zentao_2025060902[1-5][3-8]01.sql.gz" -exec rm -f {} \; ``` #### 参数说明 - `/path/to/directory`:指定需要查找删除文件的目录路径。 - `-type f`:限定只查找文件类型。 - `-name "zentao_2025060902[1-5][3-8]01.sql.gz"`:通过通配符匹配文件名。这里 `[1-5]` 表示数字范围为 1 到 5,`[3-8]` 表示数字范围为 3 到 8[^1]。 - `-exec rm -f {} \;`:对每个匹配到的文件执行 `rm -f` 删除操作。 #### 注意事项 如果文件数量较多,可以使用 `-delete` 参数替代 `-exec rm -f {} \;`,以提高效率: ```bash find /path/to/directory -type f -name "zentao_2025060902[1-5][3-8]01.sql.gz" -delete ``` 但是需要注意,`-delete` 参数会直接删除文件,且无法通过交互确认[^4]。 #### 测试命令 在实际删除之前,建议先运行以下命令测试匹配结果,确保不会误删其他文件: ```bash find /path/to/directory -type f -name "zentao_2025060902[1-5][3-8]01.sql.gz" ``` #### 示例输出 假设 `/backup` 目录下有以下文件: ``` zentao_20250609021301.sql.gz zentao_20250609022301.sql.gz zentao_20250609023301.sql.gz zentao_20250609024301.sql.gz zentao_20250609025301.sql.gz zentao_20250609025801.sql.gz zentao_20250609026301.sql.gz ``` 执行上述命令后,将仅删除以下文件: ``` zentao_20250609021301.sql.gz zentao_20250609022301.sql.gz zentao_20250609023301.sql.gz zentao_20250609024301.sql.gz zentao_20250609025301.sql.gz ``` #### 验证命令 删除完成后,可以再次运行以下命令验证是否还有匹配的文件: ```bash find /path/to/directory -type f -name "zentao_2025060902[1-5][3-8]01.sql.gz" ``` 如果没有任何输出,则表示所有匹配文件已被成功删除。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值