MYSQL中根据字段值判断返回不同的值

博客提及了原生SQL的写法以及PHP(ThinkPHP)的写法,聚焦于信息技术领域中数据库操作相关的代码书写方式。

原生SQL写法:

select case 
  when total > max then 2 
  when total < min then 1 
else 0
end
from ta 

PHP(ThinkPHP)写法:

$data = Db::connect('data')->name("pay-{$date}")
   ->where($where)
   ->order('id', 'desc')
   ->limit(($page - 1) * 50, 50)
   ->field('id,case when payType=1 then "支付宝" when payType=2 then "微信" else "未知" end as payType')
   ->select();

 

### MySQL 中基于字段的条件判断处理 在 MySQL 数据库中,可以通过多种方式实现基于字段的条件判断。以下是几种常见的方法及其具体应用: #### 使用 `CASE` 表达式 `CASE` 是一种强大的工具,用于执行复杂的条件逻辑并返回相应结果。它可以嵌入到 SQL 查询语句中,从而动态生成新列。 ```sql SELECT name, CASE WHEN name = 'John' THEN '张三' WHEN name = 'Mary' THEN '李四' ELSE '其他名字' END AS chinese_name FROM users; ``` 此查询会根据 `name` 字段不同返回对应的中文名,并将其命名为 `chinese_name`[^1]。 --- #### 使用 `IF` 函数 对于简单的二元条件判断,可以直接使用 `IF` 函数来替代 `CASE` 的部分功能。 ```sql SELECT name, IF(name = 'John', '张三', '其他') AS chinese_name FROM users; ``` 这里如果 `name` 等于 `'John'`,则返回 `'张三'`;否则返回 `'其他'`。 --- #### 处理 NULL 的情况 当需要判断某个字段是否为 `NULL` 或者非空时,可以分别使用 `IS NULL` 和 `IS NOT NULL` 关键字。此外,也可以通过字符串长度或其他属性进一步验证字段的有效性。 - **判断字段是否为 NULL** ```sql SELECT * FROM users WHERE email IS NULL; ``` - **判断字段是否不为空** 如果仅需排除空白字符,则应结合两者一起使用: ```sql SELECT * FROM users WHERE email <> '' AND email IS NOT NULL; ``` 注意,在某些情况下可能还需要考虑去除前后多余的空格等问题,因此推荐如下写法: ```sql SELECT * FROM users WHERE TRIM(email) <> ''; ``` 以上两种情况均适用于不同场景下的数据筛选需求[^2]。 --- #### 结合 JSON 数组操作 随着现代数据库设计越来越倾向于存储复杂结构化数据(如 JSON),有时也需要针对 JSON 类型的数据进行条件匹配。例如,假设表中有名为 `data` 的 JSON 列,其中保存了一个数组形式的内容列表,那么我们就可以利用内置函数完成特定查找任务。 下面是一个例子,演示如何检测某条记录内的 JSON 数组是否包含给定项: ```sql SET @search_value := '"item_to_find"'; SELECT * FROM my_table WHERE JSON_CONTAINS(data, @search_value); ``` 这段脚本首先定义变量 `@search_value` 存储目标子串,接着调用 `JSON_CONTAINS()` 测试是否存在该成员[^3]。 --- 尽管如此,在实际开发过程中还是建议尽量减少前端依赖过多数据库层面上的操作,转而让应用程序承担更多职责以便后期维护更加便捷高效[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值