-
数字函数
ABS() 求绝对值(让我想起了ABS防抱死系统)
CEILING() 舍入到最大整数,-3.6舍入到-3
FLOOR() 舍入到最小整数,-3.6舍入到-4
ROUND() 四舍五入,ROUND(3.141, 2) 需要传入两个参数,前一个为操作数,后一个为精度
-
字符串函数
LEN() 计算字符串长度
LOWER() 转换为小写字符
UPPER() 转换为大写字符
LTRIM() 去左空格
RTRIM() 去右空格
SUBSTRING(string, start_position, lenth) 字符串截取函数,从start_position处开始截取长度为lenth
concat(str1, str2, str3) 将字符串 拼接起来哦
-
类型转换
CAST(expression as type) 例: c.DepartMentAction = CAST(Organize.ID as varchar(64))
CONVERT(type, expression) 日期类型格式转换
-
空值处理函数
ISNULL(expression, value) 判断若 expression 不为空返回 expression,否则返回 value
select ISNULL(name, '佚名') from Person
-
单值判断
类似于 switch case 语句。
CASE expression
WHEN value1 THEN return1
WHEN value2 THEN return2
ELSE return3
END
当 when 后做范围判断时,case后可以没有表达式。
-
ROW_NUMBER() 函数 热名称 刚定义的名字不能直接使用,要嵌套一层查询
作用是统计行号。
ROW_NUMBER()是开窗函数,不能出现在 where 中,只能出现在 select、order by 中。
select * from
(select ROW_NUMBER() OVER(order by salary) as rownum, id, name, from Person) as e1
where e1.rownum > 3 and e1.rownum < 5
这样可以随意取到想要的数据行。
可用作分页
SELECT b.Found_ID,b.Found_Title,REPLACE(CONVERT(VARCHAR, b.Found_Time, 111), '/', '-') AS Found_Time
FROM (
SELECT *,<span style="color:#ff0000;">ROW_NUMBER() OVER(Order by a.Create_Time DESC ) AS RowNumber</span>
FROM tb_Articles_Found AS a
WHERE a.Found_ClaimState = 245
) AS b
WHERE b.<span style="color:#ff0000;">RowNumber </span>BETWEEN #{beginNum} AND #{endNum}