MySQL——内置函数

一.日期函数

current date():当前日期
current time():当前时间
current timestamp():当前时间戳
date(datetime):返回datetime参数的日期部分
date_add(date, interval d value type):在date中添加日期或时间,interval后的数值单位可以是:year、minute、second、day
date_sub(date, interval d value type):在date中减去日期或时间,interval后的数值单位可以是:year、minute、second、day
datediff(datel, date2):两个日期的差,单位是天
now():当前日期时间

与日期函数相关的数据类型包括:date(日期)、datetime(日期加时间)、timestamp(时间戳)等


二.字符串函数

chrset(str):返回字符串字符集
concat(string[,…]):连接字符串
instr(string,substring):返回substring在string中出现的位置,没有返回0
ucase(string):转换成大写
lcase(string):转换成小写
left(string,length):从string中的左边起取length个字符

right(string,length):从string中的右边起取length个字符
length(string):string的长度
replace(str,search_str,replace_str):在str中用replace_str替换search_str
strcmp(string1,string2):逐字符比较两字符串大小
substring(str,position,[length]):从str的postion开始,取length个字符
ltrim(string)、rtrim(string)、trim(string):去除前空格或后空格或前后空格


 三.数字函数

abs (number):绝对值函数
bin(decimal number):十进制转换二进制
hex(decimalNumber):转换成十六进制
conv(number,from base,to base):进制转换
ceiling(number):向上去整
floor(number):向下去整
format (number,decimal places):格式化,保留小数位数
hex(decimalNumber):转换成十六进制
rand():返回随机浮点数,范围[0.0,1.0)
mod(number.denominator):取模,求余

使用rand()生成随机数时,可以使其乘以10的倍数来达到生成对应0~10的倍数之内的数字。 


四.其他函数

user() 查询当前用户

md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串

database()显示当前正在使用的数据库

password()MySQL数据库使用该函数对用户加密,

ifnull(val1 val2):如果val1null,返回val2,否则返回val1的值

### MySQL 和 PostgreSQL 函数差异与相似性 #### 数据库特性概述 MySQL 和 PostgreSQL 是两种广泛使用的开源关系型数据库管理系统(RDBMS),各自具有独特的特性和功能。虽然两者都支持标准 SQL 查询语句,但在内置函数方面存在一些显著区别。 #### 字符串处理函数 对于字符串操作,两个平台提供了大量类似的函数。例如,在获取子串时,`SUBSTRING()` 或 `SUBSTR()` 可以在二者之间互换使用[^1]。然而,某些特定于供应商的功能有所不同: - **字符长度计算** - MySQL 使用 `CHAR_LENGTH()` - PostgreSQL 则提供 `LENGTH()` 来返回给定字符串的字节数量;如果要获得字符数,则应使用 `CHARACTER_LENGTH()` 或者简写的 `CHAR_LENGTH()` ```sql -- MySQL example SELECT CHAR_LENGTH('hello') AS char_length; -- PostgreSQL equivalent SELECT LENGTH('hello'::bytea) AS byte_length; SELECT CHARACTER_LENGTH('hello') AS character_length; ``` #### 数学运算函数 当涉及到数值计算时,大多数基本算术表达式可以在不修改的情况下跨这两个系统工作。但是,也有一些例外情况需要注意: - **随机数生成** - MySQL 提供了简单的 `RAND()` 函数来生成伪随机浮点值。 - PostgreSQL 中有更灵活的选择——可以调用 `RANDOM()` 获取双精度类型的随机数,也可以利用扩展模块如 pgcrypto 实现更强的安全性需求。 ```sql -- MySQL random number generation SELECT RAND(); -- PostgreSQL alternative approaches SELECT RANDOM(); SELECT gen_random_uuid(); -- requires 'pgcrypto' ``` #### 时间日期管理 时间戳和间隔的操作也是开发人员经常遇到的任务之一。尽管两者的语法结构大致相同,但仍有一些细微差别值得指出: - **当前时间戳检索** - 在 MySQL 中可以通过 `NOW(), CURRENT_TIMESTAMP, LOCALTIME, or LOCALTIMESTAMP` 获得服务器端的时间信息; - 对于 PostgreSQL 用户来说,除了上述选项外还有额外的方式比如 `clock_timestamp()` ,它能反映事务提交时刻的确切时间而不是开始执行查询那一刻。 ```sql -- MySQL timestamp retrieval methods SELECT NOW(), CURRENT_TIMESTAMP, LOCALTIME, LOCALTIMESTAMP; -- Additional method in PostgreSQL SELECT clock_timestamp(); ``` #### JSON 支持 随着 NoSQL 的兴起以及混合架构的应用场景增多,现代 RDBMS 都增强了对半结构化数据的支持能力。在这方面,PostgreSQL 明显领先一步,拥有更为丰富的 API 接口来进行复杂的嵌套文档解析、路径查找等功能。 ```json { "name": "John Doe", "age": 30, "address": { "street": "Main St", "city": "Anytown" } } ``` ```sql -- Extract value using -> operator in PostgreSQL SELECT json_column->>'name' FROM my_table WHERE id=1; -- Equivalent operation in MySQL might require different syntax depending on version SELECT JSON_UNQUOTE(JSON_EXTRACT(json_column, '$.name')) FROM my_table WHERE id=1; ``` 综上所述,尽管 MySQL 和 PostgreSQL 在许多核心领域保持一致,但它们也分别引入了一些独有的增强特性,这使得开发者可以根据具体项目的需求做出最佳选择。
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

很楠不爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值