我正在嘗試編寫能夠在Oracle,MySQL或SQL Server上工作的JPQL查詢。它應該找到所有的字符串字段不爲空或空的項目。在MySQL上,使用Oracle數據庫處理JPQL中的空字符串
select x from Examples x where (x.foo != '' and x.foo IS NOT null)
工作正常。但是,由於Oracle將空字符串轉換爲null的方式,所以!=''位始終返回false,因此即使幾乎沒有任何字符串爲空,我也不會得到任何結果。我可以檢測到用戶正在使用什麼類型的數據庫,併爲每個數據庫寫入不同的內容,但擁有JPQL三倍的數據並不是很好。有沒有辦法處理JPQL中的空字符串,它也適用於Oracle?
我可以找到很多相關的問題,像這樣的:
null vs empty string in Oracle
Why does Oracle 9i treat an empty string as NULL?
https://dba.stackexchange.com/questions/49744/oracle-empty-string-converts-to-null
但沒有真正做什麼吧,尤其是在JPQL。任何人都找到了解決辦法?
你爲什麼不使用一個變量,讓JPA處理這個問題?就像'.... x.foo!=:emptyString ...'和'query.setParameter(「emptyString」,「」)''? – Thomas
這是一個有趣的想法托馬斯,我不會想到這會有所作爲,但現在你提到它,它絕對看起來值得一試。謝謝。 – Juniper83
恐怕沒有幫助。不過謝謝。 – Juniper83