当前位置: 首页 > ds >正文

oracle 对一个字段的数据做排序 :值的依次排序为.“思考”->“asd”->“三点“

通过在 ORDER BY 中使用 CASE 表达式来指定自定义顺序。示例 SQL 如下(假设表名为 your_table,字段名为 your_column):

 

SELECT *
FROM your_table
ORDER BYCASE your_columnWHEN '思考' THEN 1WHEN 'asd'   THEN 2WHEN '三点' THEN 3ELSE 4END;

解释:

  • CASE your_column WHEN '思考' THEN 1 …:给每个值分配一个排序序号

  • ELSE 4:所有其它值排在最后

  • 最终 ORDER BY 会按数字升序排序,所以顺序就是 “思考” → “asd” → “三点” → 其它

如果你的排序关键字要从 Java 代码里动态传入,但又不是来自用户输入(而是你自己业务里固定的值),你可以这样拼出 .last(...) 字符串——不会产生 SQL 注入风险,因为这些值都是你自己写死在代码里的。

// 假设这三个值在代码里
String first   = "思考";
String second  = "asd";
String third   = "三点";
​
String lastSql = String.format("ORDER BY CASE prv WHEN '%s' THEN 1 WHEN '%s' THEN 2 WHEN '%s' THEN 3 ELSE 4 END",first, second, third
);
​
List<Shareh> list = lambdaQuery().eq(Shareh::getSharehId, x.getId()).last(lastSql).list();

要点

  • .last(...) 会把整个字符串原样追加到 SQL 末尾

  • String.format(...) 把 Java 变量注入到 SQL 里

  • 因为这些变量来自代码常量(非外部输入),所以不用担心注入漏洞

http://www.xdnf.cn/news/4758.html

相关文章:

  • MySQL 8.0 OCP 英文题库解析(一)
  • Web开发-JavaEE应用SpringBoot栈ActuatorSwaggerHeapDump提取自动化
  • 【Bluedroid】 HID 设备应用注册与主机服务禁用流程源码解析
  • SpringBoot项目接入DeepSeek
  • 「Mac畅玩AIGC与多模态24」开发篇20 - 多语言输出工作流示例
  • 17.Java 注解与实例
  • C++回顾 Day4
  • 【Bootstrap V4系列】学习入门教程之 组件-轮播(Carousel)高级用法
  • 基于供热企业业务梳理的智能化赋能方案
  • 易境通散货拼柜系统:如何让拼箱货代协作效率翻倍?
  • 编程日志4.28
  • python23-函数返回值和参数处理,变量作用域
  • 记录学习的第三十五天
  • 2025-05-08-如何在一次 cmd 会话中批量设置多个 API key?
  • 英文论文查重笔记
  • 用3D slicer 去掉影像中的干扰体素而还原干净影像(脱敏切脸处理同)
  • 按拼音首字母进行排序组成新的数组(vue)
  • 强人工智能是否会诞生于现在的AI之中
  • 第二章 MySql
  • lc3341. 到达最后一个房间的最少时间 Ⅰ 算法解析
  • Red Hat linux环境openssh升级到openssh-10.0p1
  • FileInputStream
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(15):何と どういう
  • process-exporter服务安装并启动
  • 【C++游戏引擎开发】第32篇:物理引擎(Bullet)—约束系统
  • ollama+deepseek+openwebui安装
  • OrangePi Zero 3学习笔记(Android篇)2 - 第一个C程序
  • 创建需求跟踪矩阵5大常见步骤(附注意事项)
  • linux - shell脚本编程
  • 解锁 AI 生产力:Google 四大免费工具全面解析20250507