【发布时间】:2020-01-17 19:42:30
【问题描述】:
我正在尝试选择字符串的数字部分并从中找到最大值。我写了这段代码,但是当我添加 CHARINDEX 函数时出现了问题。
Integer sss= (Integer) em.createQuery("SELECT max(cast(SUBSTRING(s.fam, 1, CHARINDEX('-',s.fam)-1) as integer)) FROM Teacher s").getSingleResult();
它给了我:
原因:org.hibernate.exception.SQLGrammarException:不能 提取结果集
原因:org.postgresql.util.PSQLException: ERROR: 语法错误 (大约位置:“as”)
我在 PATINDEX 和 LOCATE 函数中得到了相同的结果。
【问题讨论】:
-
SELECT max(cast(SUBSTRING(s.fam, 1, CHARINDEX('-',s.fam)-1))) as integer FROM Teacher s -
我觉得你的括号有问题
-
您的错误指向 PostgreSQL - 它有您正在使用的功能吗?
-
"SQL" 没有函数
charindex(),PostgreSQL 也没有。此处列出了所有支持的功能:postgresql.org/docs/current/functions-string.html
标签: java sql postgresql substring