我有以下DAO方法:Java本機SQL查詢時輸入參數爲空顯示所有值
public String getSomeTable(final String param1) {
String sqlString = "select * from table where name ilike ?";
Query query = this.getEntityManager().createNativeQuery(sqlString);
query.setParameter(1, "%param1%");
}
如果param1
是null
或空的話,我想從表中選擇所有條目。什麼是正確的方法來做到這一點?我目前在使用以下軟件:
public String getSomeTable(final String param1) {
String sqlString = "select * from table where name = ?";
Query query = this.getEntityManager().createNativeQuery(sqlString);
if(param1 == null)
query.setParameter(1, "%%");
else
query.setParameter(1, "%param1%");
}
但這是不可縮放的。我有像整數,日期等數據類型,我想知道是否有一種方法來跳過檢查該參數,如果它是null
。我打算使用COALESCE(?, CASE WHEN?=''THEN'%%'ELSE'%?%'),但我想呢?只能用於特定參數一次。下一個>我寫的是第二個參數。
的可能的複製[SQL查詢,如果參數爲NULL選擇所有(http://stackoverflow.com/問題/ 13474207/sql-query-if-parameter-is-null-select-all) – Julian
該表是否允許空列值?如果是的話,是否需要將查詢改爲:select * from table where name is null –
您正在使用哪個數據庫? – Julian