sql中有各种各样的函数,JPQL中自然也会有很多函数。

JQPL中的函数

算术函数

  1. ABS:返回一个数的绝对值

    SELECT ABS(-10) FROM Person p
  2. SQRT:返回一个数的平方根

    SELECT SQRT(25) FROM Person p
  3. MOD:返回两个数相除的余数

    SELECT MOD(10, 3) FROM Person p
  4. SIZE:返回集合中元素的个数

    SELECT SIZE(p.addresses) FROM Person p

字符串函数

  1. CONCAT:将两个或多个字符串拼接成一个字符串

    SELECT CONCAT(p.firstName, ' ', p.lastName) FROM Person p
  2. LENGTH:返回一个字符串的长度

    SELECT LENGTH(p.firstName) FROM Person p
  3. LOWER:返回一个字符串的小写形式

    SELECT LOWER(p.firstName) FROM Person p
  4. UPPER:返回一个字符串的大写形式

    SELECT UPPER(p.firstName) FROM Person p
  5. TRIM:返回去掉前后空格的字符串

    SELECT TRIM(p.firstName) FROM Person p
  6. SUBSTRING:返回一个子字符串

    SELECT SUBSTRING(p.firstName, 2, 4) FROM Person p

日期时间函数

  1. CURRENT_DATE:返回当前日期

    SELECT p FROM Person p WHERE p.birthDate = CURRENT_DATE
  2. CURRENT_TIME:返回当前时间

    SELECT p FROM Person p WHERE p.lastLoginTime > CURRENT_TIME
  3. CURRENT_TIMESTAMP:返回当前日期和时间

    SELECT p FROM Person p WHERE p.lastUpdateTime > CURRENT_TIMESTAMP
  4. YEAR:返回一个日期的年份

    SELECT YEAR(p.birthDate) FROM Person p
  5. MONTH:返回一个日期的月份

    SELECT MONTH(p.birthDate) FROM Person p
  6. DAY:返回一个日期的日份

    SELECT DAY(p.birthDate) FROM Person p
  7. HOUR:返回一个日期的小时

    SELECT HOUR(p.lastLoginTime) FROM Person p
  8. MINUTE:返回一个日期的分钟

    SELECT MINUTE(p.lastLoginTime) FROM Person p
  9. SECOND:返回一个日期的秒数

    SELECT SECOND(p.lastLoginTime) FROM Person p

类型转换函数

  1. CAST:用于将一个值转换为另一个类型

    SELECT CAST(p.age AS string) FROM Person p
  2. COALESCE:返回第一个非空参数

    SELECT COALESCE(p.middleName, 'N/A') FROM Person p
  3. NULLIF:如果两个参数相等,则返回空,否则返回第一个参数

    SELECT NULLIF(p.firstName, 'John') FROM Person p

聚合函数

  1. AVG:返回集合中所有数值类型属性的平均值

    SELECT AVG(p.age) FROM Person p
  2. COUNT:返回集合中元素的个数

    SELECT COUNT(p) FROM Person p
  3. MAX:返回集合中数值类型属性的最大值

    SELECT MAX(p.age) FROM Person p
  4. MIN:返回集合中数值类型属性的最小值

    SELECT MIN(p.age) FROM Person p
  5. SUM:返回集合中所有数值类型属性的和

    SELECT SUM(p.age) FROM Person p

条件函数

  1. CASE:用于在JPQL查询中实现条件语句

    SELECT CASE WHEN p.age < 18 
    THEN 'Minor'
    ELSE 'Adult' END
    FROM Person p
  2. NULLIF:返回第一个参数,如果第一个参数等于第二个参数,则返回空

    SELECT NULLIF(p.firstName, p.lastName) FROM Person p

集合函数

  1. 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等大多数主流数据库类型的大部分函数。