2017-08-30 68 views
1

即時嘗試在多個列中執行SELECT若要查明名稱中姓氏是否連接在一個字符串中,是否存在於具有名稱和姓氏和姓氏的表中。在WHERE子句中Hibernate createSQLQuery concat多個查詢

query = session.createSQLQuery("SELECT * FROM PEOPLE WHERE NAME || ' ' || FIRST_NAME || ' ' || LAST_NAME AS NOMBRE_COMPLETO LIKE :COMPLETE_NAME").setParameter("COMPLETE_NAME","%"+ nameComplete +"%"); 

這是拋出一個NullPointerException。

什麼是我可以做什麼即興做的事情。

使用Oracle 12c的Im。

回答

1

您的NPE最有可能與SQL無關,可能您的session爲空。

無論哪種方式,這不是你如何創建該查詢,如果我理解正確,你想要找到如果名字+姓氏是喜歡你的給定參數,也可能是名稱列,不完全確定是否這是什麼你意思是。

在這種情況下,查詢必須是這樣的:

SELECT * FROM PEOPLE WHERE NAME LIKE :COMPLETE_NAME AND CONCAT(FIRST_NAME, " ", LAST_NAME) AS NOMBRE_COMPLETO LIKE :COMPLETE_NAME 

你可以看到CONCAT(DOC對MySQL至少)位置:https://www.w3schools.com/sql/func_mysql_concat.asp

基本上我們只是增加之間的空間名字和姓氏。

上面的查詢將檢查柱name是LIKE complete_name並且如果first_namelast_name之間的級聯是LIKE complete_name

+0

感謝您的幫助,我會嘗試您所說的話,到目前爲止,您對該會話爲空是正確的,我將研究您的查詢並嘗試查看是否有幫助。對不起,如果我的問題很難理解,即時消息試圖做的是如果一個表中存在一個完整的名稱名稱和姓氏是在列中分離。我將添加在後使用oracle 12c即時通訊我認爲我不能使用concat對於兩個以上的字符串,但我可以連接兩個字符串,然後連接第三個字符串。 – Andres

+0

非常感謝你,現在我的代碼正在工作,並且我學習了一些新的東西,謝謝你。 – Andres

+0

沒問題,很高興我能幫忙:) –