语法一:
case when cond1 then res1 [when cond2 then res2] else res end;
- 这种语法用于条件判断,其中
cond1
和cond2
是需要评估的条件。 - 如果
cond1
为真,则执行res1
。 - 如果
cond1
为假,程序会继续检查cond2
,如果cond2
为真,则执行res2
。 - 如果所有的
when
条件都不满足,则执行else
后面的res
。
语法二(适用于等值匹配):
case expr when val1 then res1 [when val2 then res2] else res end;
- 这种语法用于等值匹配,其中
expr
是要比较的表达式。 - 如果
expr
等于val1
,则执行res1
。 - 如果
expr
等于val2
,则执行res2
。 - 如果
expr
不等于任何when
子句中的值,则执行else
后面的res
。
if(expr, val1, val2)
这个函数接受三个参数:
expr
:一个表达式,其结果将被评估为真或假。val1
:如果expr
为真(成立),则返回val1
。val2
:如果expr
为假(不成立),则返回val2
。
ifnull(expr, val1)
这个函数用于处理可能为 null
的值:
expr
:需要检查是否为null
的表达式。val1
:如果expr
不为null
,则返回expr
的值;如果expr
为null
,则返回val1
。
示例
假设我们有一个变量 x
,我们想根据 x
的值来决定输出什么:
if(x > 10, "x is greater than 10", "x is 10 or less")
如果 x
大于 10,输出将是 "x is greater than 10";否则,输出将是 "x is 10 or less"。
对于 ifnull
,假设我们有一个可能为 null
的变量 y
:
ifnull(y, "default value")
如果 y
不为 null
,将返回 y
的值;如果 y
为 null
,将返回 "default value"。
1. Cookie会话跟踪方案
原理:
- 通过HTTP响应头中的
Set-Cookie
设置Cookie。 - 客户端在随后的请求中通过请求头中的
Cookie
发送回服务器。
优缺点:
- 优点: 作为HTTP协议的一部分,Cookie的使用非常普遍和方便。
- 缺点:
- 移动端APP通常无法使用Cookie。
- 安全性问题,用户可以自行禁用Cookie。
- Cookie不能跨域使用。
2. Session会话跟踪方案
原理:
- Session的实现基于Cookie,通过
Set-Cookie
在客户端存储一个Session ID,服务器使用这个ID来识别和管理会话。
优缺点:
- 优点: 数据存储在服务器端,相对安全。
- 缺点:
- 在服务器集群环境下,Session的共享和管理变得复杂。
- 继承了Cookie的所有缺点。
3. 令牌(Token)会话跟踪方案
优缺点:
- 优点:
- 支持PC端和移动端,兼容性好。
- 能够解决服务器集群环境下的认证问题。
- 减轻服务器端的存储压力,因为令牌通常存储在客户端。
- 缺点: 需要自行实现令牌的生成、验证和管理机制。