JPA中的函数
sql中有各种各样的函数,JPQL中自然也会有很多函数。
JQPL中的函数
算术函数
ABS:返回一个数的绝对值
SELECT ABS(-10) FROM Person p
SQRT:返回一个数的平方根
SELECT SQRT(25) FROM Person p
MOD:返回两个数相除的余数
SELECT MOD(10, 3) FROM Person p
SIZE:返回集合中元素的个数
SELECT SIZE(p.addresses) FROM Person p
字符串函数
CONCAT:将两个或多个字符串拼接成一个字符串
SELECT CONCAT(p.firstName, ' ', p.lastName) FROM Person p
LENGTH:返回一个字符串的长度
SELECT LENGTH(p.firstName) FROM Person p
LOWER:返回一个字符串的小写形式
SELECT LOWER(p.firstName) FROM Person p
UPPER:返回一个字符串的大写形式
SELECT UPPER(p.firstName) FROM Person p
TRIM:返回去掉前后空格的字符串
SELECT TRIM(p.firstName) FROM Person p
SUBSTRING:返回一个子字符串
SELECT SUBSTRING(p.firstName, 2, 4) FROM Person p
日期时间函数
CURRENT_DATE:返回当前日期
SELECT p FROM Person p WHERE p.birthDate = CURRENT_DATE
CURRENT_TIME:返回当前时间
SELECT p FROM Person p WHERE p.lastLoginTime > CURRENT_TIME
CURRENT_TIMESTAMP:返回当前日期和时间
SELECT p FROM Person p WHERE p.lastUpdateTime > CURRENT_TIMESTAMP
YEAR:返回一个日期的年份
SELECT YEAR(p.birthDate) FROM Person p
MONTH:返回一个日期的月份
SELECT MONTH(p.birthDate) FROM Person p
DAY:返回一个日期的日份
SELECT DAY(p.birthDate) FROM Person p
HOUR:返回一个日期的小时
SELECT HOUR(p.lastLoginTime) FROM Person p
MINUTE:返回一个日期的分钟
SELECT MINUTE(p.lastLoginTime) FROM Person p
SECOND:返回一个日期的秒数
SELECT SECOND(p.lastLoginTime) FROM Person p
类型转换函数
CAST:用于将一个值转换为另一个类型
SELECT CAST(p.age AS string) FROM Person p
COALESCE:返回第一个非空参数
SELECT COALESCE(p.middleName, 'N/A') FROM Person p
NULLIF:如果两个参数相等,则返回空,否则返回第一个参数
SELECT NULLIF(p.firstName, 'John') FROM Person p
聚合函数
AVG:返回集合中所有数值类型属性的平均值
SELECT AVG(p.age) FROM Person p
COUNT:返回集合中元素的个数
SELECT COUNT(p) FROM Person p
MAX:返回集合中数值类型属性的最大值
SELECT MAX(p.age) FROM Person p
MIN:返回集合中数值类型属性的最小值
SELECT MIN(p.age) FROM Person p
SUM:返回集合中所有数值类型属性的和
SELECT SUM(p.age) FROM Person p
条件函数
CASE:用于在JPQL查询中实现条件语句
SELECT CASE WHEN p.age < 18
THEN 'Minor'
ELSE 'Adult' END
FROM Person pNULLIF:返回第一个参数,如果第一个参数等于第二个参数,则返回空
SELECT NULLIF(p.firstName, p.lastName) FROM Person p
集合函数
MEMBER OF:用于判断一个元素是否包含在一个集合中
SELECT p FROM Person p WHERE :address MEMBER OF p.addresses
自定义函数
当需要在JPQL中使用一些数据库特定的函数时,可以使用JPQL中的FUNCTION函数。FUNCTION函数的语法是:
FUNCTION(function_name, [arg1, arg2, ...]) |
其中, 其中,函数
function_name是数据库特定的函数名,
arg1, arg2, …`是该函数的参数列表。如果函数没有参数,则参数列表为空。
下面是输出包含在pids中的pid的数据:
select * from Person p FUNCTION('CONTAINS', FUNCTION('JSON_EXTRACT', p.pids, '$.ids'), :pid) = TRUE |
FUNCTION函数可以调用MYSQL、ORACLE等大多数主流数据库类型的大部分函数。