xml sql里 用户信息等于工号或者用户信息模糊查询用户名
时间: 2023-08-14 15:07:48 浏览: 49
可以使用如下 SQL 语句实现:
```sql
SELECT * FROM users
WHERE user_id = '工号' OR user_name LIKE '%用户名%'
```
其中,`users` 表为存储用户信息的表,`user_id` 为用户工号列,`user_name` 为用户名列。`SELECT *` 表示查询所有列,`WHERE` 语句中使用 `OR` 操作符连接两个条件。第一个条件是 `user_id = '工号'`,表示查询工号为指定值的用户信息;第二个条件是 `user_name LIKE '%用户名%'`,表示查询用户名中包含指定关键词的用户信息。`LIKE` 操作符用于模糊匹配,`%` 表示任意字符。
相关问题
xml 动态sql里 用户信息等于工号或者用户信息模糊查询用户名
在 MyBatis 的动态 SQL 中,可以使用 `<if>` 元素来根据条件动态拼接 SQL 语句。以下是一个实现用户信息等于工号或者用户信息模糊查询用户名的动态 SQL 示例:
```xml
<select id="getUserInfo" parameterType="map" resultType="User">
SELECT * FROM users
WHERE 1 = 1
<if test="user_id != null">
AND user_id = #{user_id}
</if>
<if test="user_name != null">
AND user_name LIKE CONCAT('%', #{user_name}, '%')
</if>
</select>
```
其中,`getUserInfo` 是 SQL 映射语句的 ID,`parameterType` 表示传入参数类型,`resultType` 表示返回结果类型。在 SQL 语句中,`1 = 1` 是为了方便后面的条件拼接,不影响查询结果。`<if>` 元素的 `test` 属性指定条件表达式,如果满足条件则拼接该条件的 SQL 语句。`${user_id}` 和 `${user_name}` 是从传入参数中获取的工号和用户名,可以通过 Map 或实体类来传入。`CONCAT('%', #{user_name}, '%')` 是拼接模糊匹配的字符串,`#{}` 表示占位符,可以防止 SQL 注入。
这样实现的好处是可以根据传入参数动态生成 SQL 语句,提高查询效率和安全性。
xml 动态sql里 用户信息是一个入参,它等于工号或者它模糊查询用户名
如果用户信息是一个入参,可以使用 MyBatis 的 OGNL 表达式来判断工号或用户名是否为空,从而动态拼接 SQL 语句。以下是一个实现用户信息等于工号或者模糊查询用户名的动态 SQL 示例:
```xml
<select id="getUserInfo" parameterType="String" resultType="User">
SELECT * FROM users
WHERE 1 = 1
<if test="user_info != null and user_info != ''">
<choose>
<when test="user_info.matches('\\d+')">
AND user_id = #{user_info}
</when>
<otherwise>
AND user_name LIKE CONCAT('%', #{user_info}, '%')
</otherwise>
</choose>
</if>
</select>
```
其中,`getUserInfo` 是 SQL 映射语句的 ID,`parameterType` 表示传入参数类型,`resultType` 表示返回结果类型。在 SQL 语句中,`1 = 1` 是为了方便后面的条件拼接,不影响查询结果。`<if>` 元素的 `test` 属性指定条件表达式,如果满足条件则拼接该条件的 SQL 语句。`<choose>` 元素用于选择条件分支,如果入参是数字则查询工号,否则查询用户名。`#{user_info}` 是从传入参数中获取的用户信息,可以直接作为参数传入。`CONCAT('%', #{user_info}, '%')` 是拼接模糊匹配的字符串,`#{}` 表示占位符,可以防止 SQL 注入。
这样实现的好处是可以根据入参动态生成 SQL 语句,避免了传入多个参数的麻烦。