[英]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.