簡體   English   中英

DSL 查詢 sortBy 在 java 中不區分大小寫的查詢形成,mssql DB

[英]DSL query sortBy in case insensitive query formation in java, mssql DB

電流響應 az AZ 需要作為 aA-zZ 或 Aa-Zz

代碼行:return select -> select.orderBy(sortFields); 注意:其中sortFieldsList<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM