2016-01-15 86 views
2

我想做的事:Hibernate查詢,刪除前導零

select * from accounts where account_number = '234567' 

用戶可以在GUI上的賬號=「234567」,但數據庫列中輸入可能是「0000234567」的值。它仍然應該匹配。

此SQL查詢可以工作嗎?

select * from accounts a where 
(:accountNumber LIKE (TRIM(REPLACE((a.account_number), '0', '%')))) 
+1

你爲什麼要問我們,如果查詢可以正常工作,而不是隻是測試它是否有效? –

+0

你可以做一些類似'select * from account where account_number ='0000234567'* 1'而不是'replace'。 –

+0

感謝您的回覆。我的查詢不起作用。 account_number是一個varchar。所以我不認爲我可以乘以1.另外,我正在尋找一個HQL查詢。 – Tiya

回答

4

您可以使用@Formula註釋和引進一個新的領域 - trimmedAccount

@Formula("TRIM(REPLACE((account_number), '0', '%')") 
private Integer trimmedAccount; 

然後,只需使用trimmedAccount在HQL

+0

它不會仍然是一個字符串?或者公式會自動將字符串轉換爲整數? – user1567291

+0

是的,它應該是String。我只是需要它,並不得不使它字符串才能工作。 @Tiya請將此答案標記爲正確答案,即使您以其他方式爲您的代碼解決了問題,對於其他人發現此問題確實是正確答案也不錯。 – user1567291