树叶云带你简单聊聊OceanBase里那些常用函数和它们怎么用
- 问答
- 2025-12-25 21:16:29
- 1
OceanBase官方文档、技术博客及社区分享)
咱们今天就用聊天的方式,说说OceanBase数据库里那些你平时可能会经常碰到的函数,以及它们最直白的用法,你不用把它想得多复杂,就当成是数据库提供的一些现成“小工具”,帮你轻松处理数据。
处理文本的“剪刀手”:字符串函数
当你需要把一堆文字拆开、合并或者找其中某一部分时,就用得上它们。
-
CONCAT:字符串拼接能手
- 干嘛用的? 把好几个字符串首尾连接起来,变成一个更长的字符串,你数据库里有“姓”和“名”两个字段,想合成一个“全名”显示出来。
- 怎么用?
CONCAT(字符串1, 字符串2, ...),超级简单,把你想要连起来的字段名或者直接写的文字(用单引号包起来)放进去就行了。 - 举个栗子:
SELECT CONCAT(last_name, ' ', first_name) AS full_name FROM employees;这句就能把last_name和first_name用个空格连起来,输出像“张三丰”这样的全名。
-
SUBSTR 或 SUBSTRING:截取一段文字
- 干嘛用的? 从一长串文字里,切出你指定的那一小段,你只想看身份证号的前六位(地区码)。
- 怎么用?
SUBSTR(原始字符串, 开始位置, 要截多长),这里注意,OceanBase里字符串的位置通常是从1开始数的,不是0。 - 举个栗子:
SELECT SUBSTR('欢迎使用OceanBase', 4, 3) AS result;这会从第4个字开始,截取3个字,结果就是“使用O”。
-
LENGTH:量量文字有多长
- 干嘛用的? 返回一个字符串的字符个数,检查用户输入的密码长度是否达标。
- 怎么用?
LENGTH(字符串)。 - 举个栗子:
SELECT LENGTH('Hello, World!') AS len;结果是13,因为空格和标点都算一个字符。
跟数字打交道:数值函数
这些函数专门对付数字计算。
-
ROUND:四舍五入
- 干嘛用的? 把一个小数四舍五入到指定的小数位数,把商品价格19.987元显示为19.99元。
- 怎么用?
ROUND(数字, 保留几位小数),如果省略第二个参数,默认就四舍五入成整数。 - 举个栗子:
SELECT ROUND(123.4567, 2) AS result;结果就是123.46。
-
ABS:绝对值

- 干嘛用的? 不管正负,只取数值的大小,计算温差,不管是升了5度还是降了5度,变化幅度都是5。
- 怎么用?
ABS(数字)。 - 举个栗子:
SELECT ABS(-10.5) AS result;结果是10.5。
-
MOD:求余数
- 干嘛用的? 计算两个数相除后的余数,判断一个数字是奇数还是偶数(除以2余0就是偶数)。
- 怎么用?
MOD(被除数, 除数)。 - 举个栗子:
SELECT MOD(10, 3) AS result;结果是1,因为10除以3商3余1。
处理日期和时间:日期时间函数
这些函数帮你轻松搞定生日、订单日期、时间间隔这些麻烦事。
-
NOW 或 SYSDATE:获取当前时刻
- 干嘛用的? 直接返回数据库服务器当前的日期和时间,记录一条数据是何时被插入的。
- 怎么用?
NOW(),它不需要任何参数。 - 举个栗子:
SELECT NOW() AS current_time;会返回类似2023-10-27 15:30:45的结果。
-
DATE_FORMAT:把日期打扮成你喜欢的样子
- 干嘛用的? 把一个日期值按照你指定的格式输出,默认的日期格式可能你不喜欢,用这个可以随心所欲地变。
- 怎么用?
DATE_FORMAT(日期, '格式字符串'),格式字符串里用特定的符号代表年、月、日等。 - 举个栗子:
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日') AS nice_date;可能会输出“2023年10月27日”。
-
DATEDIFF:计算两个日期差几天

- 干嘛用的? 计算两个日期之间相隔的天数,算一下订单创建日和发货日隔了多久。
- 怎么用?
DATEDIFF(日期1, 日期2),结果是日期1减去日期2的天数。 - 举个栗子:
SELECT DATEDIFF('2023-10-31', '2023-10-27') AS day_gap;结果是4。
条件判断的“:条件函数
这是最有意思的一类,让查询结果根据条件变化。
-
CASE WHEN:数据库里的“....”
- 干嘛用的? 根据不同的条件,返回不同的值,功能非常强大,可以处理复杂的逻辑判断。
- 怎么用? 有两种写法,一种简单一种复杂。
- 简单Case:
CASE 字段 WHEN 值1 THEN 结果1 WHEN 值2 THEN 结果2 ... ELSE 其他结果 END - 搜索Case(更常用):
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ... ELSE 其他结果 END
- 简单Case:
- 举个栗子: 给员工绩效打分评级。
SELECT name, score, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 60 THEN '及格' ELSE '不及格' END AS grade FROM employees;这样就会根据分数自动生成评级。
-
IF:更简洁的判断
- 干嘛用的? 如果只需要进行简单的“..否则...”判断,用IF更简洁。
- 怎么用?
IF(条件, 条件为真时返回的值, 条件为假时返回的值)。 - 举个栗子:
SELECT name, IF(age >= 18, '成年人', '未成年人') AS adult FROM users;
对付空值的“补缺者”:NULL处理函数
数据库里的NULL表示“没有数据”或“未知”,直接计算会出问题,需要特殊处理。
- IFNULL 或 COALESCE:给空值找个替补
- 干嘛用的? 如果一个字段可能是NULL,你想让它显示为一个默认值(比如0或‘未知’),就用这个。
- 怎么用?
IFNULL(可能为空的字段, 替补值)。COALESCE功能类似,但可以接受多个参数,返回第一个非NULL的值。 - 举个栗子: 员工的奖金字段可能为NULL,你想让没奖金的人显示为0:
SELECT name, IFNULL(bonus, 0) AS actual_bonus FROM employees;
好了,以上就是OceanBase中一部分非常常用且实用的函数,不用死记硬背,用到的时候知道有这么一个“工具”,然后翻一下文档(来源:OceanBase官方函数手册)看看具体语法就行了,多在实际的SQL语句里试试,很快就熟练了!
本文由歧云亭于2025-12-25发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/68390.html
