SQL语句 concat的用法

本文详细介绍了MySQL中的concat()函数,该函数用于将多个字符串连接成一个字符串,并探讨了其在模糊查询和防止SQL注入中的应用。同时,文章提供了在MyBatis中使用concat()函数进行模糊查询的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(https://baijiahao.baidu.com/s?id=1595349117525189591&wfr=spider&for=pc)

一、concat()函数

1、功能:将多个字符串连接成一个字符串。

2、语法:concat(str1, str2,…)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

(https://blog.youkuaiyun.com/qq_37584445/article/details/80360376)

在很多时候,我们需要模糊查询 like,
对于mysql 的 like 而言,一般都要用 like concat() 组合,可以防止sql注入。
在mybatis 中就可以这么写:

select * from region A where A.region_name like concat( ‘%’ , ‘#{region_name}’ , ‘%’ )

SQL 中的 `CONCAT` 函数用于将两个或多个字符串值连接在一起。该函数在 SQL Server、MySQL 和其他数据库管理系统中均支持,但不同数据库系统可能有细微差别。 ### 基本语法 ```sql CONCAT(string1, string2, ..., stringN) ``` 其中 `string1`, `string2` 等可以是列名、常量或表达式。 ### 示例 #### 1. 连接表中的两列 以下示例展示如何将表中的 `FirstName` 和 `LastName` 列合并为一个完整的名称: ```sql -- 创建一个示例表 CREATE TABLE ExampleTable ( FirstName NVARCHAR(50), LastName NVARCHAR(50) ); -- 插入一些示例数据 INSERT INTO ExampleTable (FirstName, LastName) VALUES ('John', 'Doe'), ('Jane', 'Smith'), ('Michael', 'Johnson'); -- 使用 CONCAT 函数连接 FirstName 和 LastName 列,并显示结果 SELECT CONCAT(FirstName, ' ', LastName) AS FullName FROM ExampleTable; ``` 此查询会生成包含完整姓名的输出,例如 "John Doe"、"Jane Smith" 等[^1]。 #### 2. 在串联字符串中使用系统函数 除了基本的字符串连接外,还可以在 `CONCAT` 函数中使用系统函数。例如,结合 `GETDATE()` 函数获取当前日期: ```sql SELECT CONCAT('SQL ISNULL function published on', ' ', GETDATE() - 2) AS SingleString; ``` 该语句会返回一个包含特定日期的字符串,例如 "SQL ISNULL function published on 2023-10-28"(假设当前日期是 2023-10-30)[^2]。 #### 3. MySQL 中的特殊用途 在 MySQL 中,`CONCAT` 函数同样适用,并且可以处理更多复杂的场景,例如与条件语句结合使用: ```sql SELECT CONCAT('User: ', name, ' has email: ', email) AS UserInfo FROM Users; ``` 这会将用户名称和电子邮件地址组合成一个描述性字符串。 此外,`CONCAT` 可以与其他函数(如 `COALESCE`)配合使用,以确保即使某些字段为空,也不会影响整体字符串的完整性: ```sql SELECT CONCAT('Address: ', COALESCE(street, ''), ', ', city, ', ', state) AS FullAddress FROM Addresses; ``` 在此查询中,如果 `street` 字段为空,则用空字符串替代,避免了 NULL 值干扰最终结果[^3]。 ### 注意事项 - **SQL Server**:不支持 `CONCAT` 的非字符串参数直接转换,需要手动转换数字等类型。 - **MySQL**:允许直接传入数字类型,会自动将其转换为字符串。 - **兼容性**:虽然大多数现代数据库系统支持 `CONCAT`,但在某些系统(如 Oracle)中可能需要用 `||` 操作符替代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值