[英]Difference between MySQL (SQL) SUBSTR - ORDER BY statements
[英]what is the difference between SUBSTRING and SUBSTR functions (SQL)?
在我使用之前:
entityManagerFactory.createQuery("select p FROM Pays p where SUBSTRING(p.libeleClient, 0,1)
但是当我使用此查询时:
entityManagerFactory.createQuery("select p FROM Pays p where SUBSTR(p.libeleClient, 0,1)
我有一个例外:(
谁可以替换SUBSTR的SUBSTRING?
SUBSTR是Oracle的函数
SUBSTRING是MySql的函数
取决于您使用的数据库
编辑:
尝试如下编辑您的Java代码
String query = "select p FROM Pays p where SUBSTRING(p.libeleClient, 0,1)";
// from Connection Object (connection)
DatabaseMetaData meta = connection.getMetaData();
//If the DB is Oracle
if(meta.getDatabaseProductName()).contains("Oracle")) {
entityManagerFactory.createQuery(query.replace("SUBSTRING", "SUBSTR"));
}// If the DB not Oracle , any Other like MySql
else {
entityManagerFactory.createQuery(query);
}
您没有说得到什么异常,但是我猜测这是一个语法错误。 Oracle的SUBSTR()的正确语法为...
where SUBSTR(p.libeleClient, 0,1) = 'X'
...(管他呢)。 那是单个字符的第一次出现必须等于; 一些指定的值。 SUBSTR()不是布尔函数。
而SUBSTRING()根本不是oracle函数。 您或者是从其他数据库借用了语法,或者您正在使用定制功能而没有意识到它。
“我尝试了您的建议,但是没有用”
收到错误消息吗? 还是说它不返回任何记录? 因为我给出了文档中定义的完全有效的用法。 但是您还没有提供任何数据示例,因此对于我来说,几乎不可能提供一种解决方案来从数据库中返回行。
子字符串是sql标准ISE:IEC 9075:1992中定义的sql操作。
substr是oracle使用的旧语法。 这种错误的语法与真实英语单词的sql用法完全不一致,从不缩写。
Oracle仍然不支持标准语法。
是否有人在oracle中编写了用于支持标准语法的hack?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.