Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL的CHARINDEX语法异常_Java_Sql_Postgresql_Substring - Fatal编程技术网

Java SQL的CHARINDEX语法异常

Java SQL的CHARINDEX语法异常,java,sql,postgresql,substring,Java,Sql,Postgresql,Substring,我试图选择字符串的数字部分,并从中找到最大值。我写了这段代码,但当我添加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.sqlgramma

我试图选择字符串的数字部分,并从中找到最大值。我写了这段代码,但当我添加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.sqlgrammareexception:无法 提取结果集

原因:org.postgresql.util.psql异常:错误:语法错误 大致位置:as

我在PATINDEX和LOCATE函数中也得到了同样的结果。

好的STRPOS在Postgres 12 fiddle中工作得很好:

您需要用strpos替换charindex

我知道,所有这些都在评论中,但您可能有一个问题,即STRPOS参数如下:

strpos(string, substring)
CHARINDEX(substring, string) 
对于CHARINDEX来说是这样的:

strpos(string, substring)
CHARINDEX(substring, string) 
在您的代码行中,您还必须小心:

错误:不允许负的子字符串长度 这将在字符串中没有“-”时结束

错误:integer:test类型的输入语法无效


选择maxcastSUBSTRINGs.fam,1,CHARINDEX'-',s.fam-1作为教师的整数。我认为您的括号有问题。您的错误指向PostgreSQL-它是否具有您正在使用的函数?SQL没有函数CHARINDEX,PostgreSQL也没有。这里列出了所有受支持的函数:感谢您的回答,但是使用thisInteger sss=Integer em.createQuerySelectMaxCastSubstrings.fam,1,strposs.fam,'-'-1作为教师s.getSingleResult中的整数;我也一样error@Vytsalo你检查过我警告过的可能出现的问题了吗?您检查过s.fam列中的数据了吗?是的,它只有两个字段为123 aks和348 cbsOk的记录,所以有两个问题:1。使用我的代码和这些数据,您会得到与您的问题相同的错误?2.这是你问题中的错误的文本吗?干杯