[英]DSL query sortBy in case insensitive query formation in java, mssql DB
電流響應 az AZ 需要作為 aA-zZ 或 Aa-Zz
代碼行:return select -> select.orderBy(sortFields); 注意:其中sortFields是List<OrderField> sortFields = new ArrayList>()
嘗試使用DSL.lower menthod 但它說將 sortFields 轉換為字符串。 代碼行:return select -> select.orderBy(lower(sortFields));
sortFields 在 List<OrderField<?>> 的參考中 有沒有什么方法可以讓排序不區分大小寫以獲得響應(aA-zZ 或 Aa-Zz)
查看方法簽名:
你不能只是組合它們,它們接受不同的類型。 ORDER BY
子句接受OrderField
的集合(或可變參數數組)( Field<?>
是一個有效的子類型),而LOWER()
是一個標量 function 只接受一個字段。 您不能只是LOWER()
字段集合。 此外,您不能LOWER()
a SortField
,它可能類似於TABLE.COLUMN.asc()
。
我不知道為什么您的原始數據結構必須是List<OrderField>
。 您是否在某處維護該列表以創建動態 SQL,包括動態ASC
/ DESC
排序順序?
在任何情況下,您都必須將LOWER()
function 分別應用於每個字段,例如:
List<Field<?>> sortFields = ...
select.orderBy(sortFields.stream().map(f -> lower(f)).toList())
如果您有動態ASC
/ DESC
排序指示,則必須在對每個 position 調用lower(f)
后應用它。
作為旁注, 排序規則是 SQL 實現不區分大小寫排序的慣用方式,也許更好地使用它。
最后通過添加字段找到了答案 orderFieldSort = lower((Field) orderField);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.