SQL备忘--Like/逻辑运算/Order By排序/Top N特殊处理备忘

软件设计师(中级)概要笔记:基于软件设计师教程(第5版) 软件设计师(中级)笔记:基于软件设计师教程(第5版) 阅读详情

1. Like 模糊查询

基本语法

在where 条件中使用LIKE关键字进行匹配

WHERE c1 LIKE ‘%end’ //可以匹配到“friend”等单词

匹配模式

  • 百分号(%): 表示匹配零个或多个任意字符
  • 下划线(_):表示匹配一个任意字符

转义

转义字符:ESCAPE关键字

如果查找模式包含了%或者_,需要用到转义字符

SELECT *
FROM table_name
WHERE c1 LIKE '%100#%%' ESCAPE '#'					--SQL定义'#'为转义字符关键字

转义字符后面紧跟的’%‘表示此处要匹配一个原字符’%',因此上面的案例能匹配到:“进度已达100%,完成”

MYSQL和PostgreSQL自带’\'转义字符

如果省略ESCASE子句,则MYSQL和PostgreSQL中,可用默认的转义字符’\'进行转义, 例如“WHERE c1 LIKE ‘%100\%%’”


2. 逻辑运算符

AND OR 逻辑运算符

与其他语法相同,与或门有短路运算,当第一步能判断出结果时,不会进行第二步判断

NOT 逻辑非运算符

与其他运算符一起使用时,表示将随后的运算结果取反

NOT > 查找【不大于】指定值的数据
NOT BETWEEN xxx AND yyy 查找指定范围外的数据
NOT LIKE 不匹配某个模式
NOT c1 IS NULL 不为空, 等价于 c1 IS NOT NULL

运算符优先级:

  1. 比较运算符的优先级比逻辑运算符的优先级高
  2. 在逻辑运算符中NOT比AND的优先级高, AND比OR的优先级高
  3. 各数据库对sql的优先级实现略有差异。为保证数据准确,最好能用小括号明确计算顺序,而不要过于依赖数据库自己的计算顺序

4. 排序

1. ORDER BY 可以用表达式

SELECT *
FROM table_name
WHERE c1="XXX"
ORDER BY c2*12 - c3

2. ORDER BY 可以用数字表示用第几列排序

SELECT *
FROM table_name
WHERE c1="XXX"
ORDER BY 2			--第二列排序

3. 空值在排序中的控制

排序位置
  1. Mysql、Microsoft SQL Server、SQLite会把空值排在最前
  2. Oracle和PostgreSQL会把空值排在最后
主动控制

Oracle、PostgreSQL及SQLite支持使用 NULLS FIRST关键字,将空值排在最前;或者用NULLS LAST关键字,将空值排在最后。

SELECT *
FROM table_name
WHERE c1="XXX"
ORDER BY c5	 NULL FIRST	

4. 中文排序控制

1. Oracle
  • 默认使用AL32UTF8字符编码,中文按照偏旁部首进行排序
  • 可以用SCHINESE_PINYIN_M来指定拼音排序
SELECT *
FROM table_name
WHERE c1=""
ORDER BY NLSSORT(c5, 'NLS_SORT = SCHINESE_PINYIN_M')
2. MYSQL8.0
  • 默认使用utf8mb4字符编码,中文按照偏旁部首进行排序
  • 可以用转换函数实现其他中文排序
SELECT *
FROM table_name
WHERE c1=""
ORDER BY CONVERT(c5 USING GBK)		--按拼音排序
3. Microsoft SQL Server
  • 字符集是根据操作系统所在的区域进行设置,中国地区则默认使用Chinese_PRC_CI_AS排序规则,按照偏旁部首进行排序。
  • 可以用COLLATE实现其他中文排序
SELECT *
FROM table_name
WHERE c1=""
ORDER BY  c5 COLLATE Chinese_PRC_CI_AI_KS_WS		--按拼音排序

还可用别的方式:

ORDER BY  c5 COLLATE Chinese_Stroke_CI_AS		--按笔画顺序排序
4. PostgreSQL
  • 默认使用UTF-8字符集,按照偏旁部首进行排序。
  • 可以用COLLATE实现其他中文排序
SELECT *
FROM table_name
WHERE c1=""
ORDER BY  c5 COLLATE "zh_CN"		--按拼音排序
5. SQLite
  • 默认使用UTF-8字符集,按照偏旁部首进行排序.
  • 无法改变其他排序

5. Top-N 取值

SQL标准定义了 FETCH和OFFSET子句限定返回结果数量(但只有Oracle、Microsoft SQL Server及PostgreSQL支持这种语法)

SELECT *
FROM table_name
OFFSET 0 ROWS
FETCH FIRST 5 ROWS ONLY;

OFFSET 表示偏移量,0则是从首项开始取。下面的FETCH表示取多少条数据,这里5表示仅取5条数据;ONLY限制了即使最后有多条重复数据也舍弃,最多只取前五条

Mysql、PostgreSQL、 SQLite支持另一种语法:LIMIT子句
SELECT *
FROM table_name
LIMIT 10 OFFSET 0;

也可以实现从首项开始取,取10条数据记录

android11-修改屏幕显示方向和触摸方向 参数0表示12点钟方向显示参数90表示3点钟方向显示参数180表示6点钟方向显示参数270表示9点钟方向显示。 阅读详情

相关推荐

Synares病毒实战:如何手动清除C盘隐藏的Synaptics.exe(附资源修复脚本)

本文详细介绍了Synares感染型病毒的手动清除方法,该病毒伪装成Synaptics触摸板驱动,感染EXE和XLSX文件。文章提供了从病毒行为分析、母体清除到被感染文件修复的全流程指南,并附有实用的资源修复脚本和防御加固方案,帮助用户彻底清除这一顽固病毒。

lg888的博客 2313

SQL---LIKE中的‘[’或‘]’

最近这两天在改公司项目中的BUG,遇到一个问题很奇怪。如下: SELECT TOP 5 [Name] FROM [tblUt] ORDER BY [Created] DESC SELECT TOP 5 [Name] FROM [tblUt] WHERE [Name] LIKE '[%' ORDER BY [Created] DESC(结果为空) SELECT TOP 5 [

不犯錯自然好,但犯錯或許就是為了能多學一些! 827

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

SQL3 之常用查询 LIKE ORDER BY 选取关键字、排序

LIKE ORDER BY, 截取关键字、排序

HaileeRPIJNU的博客 531

STM32与小米CyberGear微电机的CAN通信协议深度解析

本文深度解析STM32与小米CyberGear微电机的CAN通信协议,涵盖硬件连接、CAN总线配置、通信协议解析及多电机协同控制。重点介绍了基于STM32的电机控制实践,包括运动模式、速度与位置模式设置,以及数据反馈与故障诊断,为机器人及自动化设备开发提供实用指南。

www00的博客 359

YOLOv8傻瓜式教程

YOLOv8傻瓜式教程,附带详细参数配置。

Father_of_Python的博客 1万+

sql语句中多个字段like模糊查询,按匹配度排序

like模糊查询,按匹配度排序 select * ,((case when name like '关键字%' then 4 else 0 end)+ (case when name like '%关键字%' then 3 else 0 end)) as namesort ,((case when content like '关键字%' then 2 else 0 end)+ (case ...

☆╮123☆ 1万+

解码运动想象:BCI Competition IV 2a数据集实战指南

本文提供了BCI Competition IV 2a数据集的实战指南,详细解析了该经典运动想象脑电数据集的结构、文件格式与实验范式。通过MNE-Python等工具,逐步演示了从原始信号读取、预处理(通道选择、滤波、分段)到特征提取(CSP、频带功率)和模型训练(LDA、SVM)的完整流程,并强调了受试者独立评估的重要性,为BCI研究者提供了可复现的入门与进阶路径。

weixin_29304985的博客 361

模糊查询LIKE按查询的where子句中的字段顺序对sql查询的结果进行排序

按查询的where子句中的字段顺序对sql查询的结果进行排序

zhansan的博客 636

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8122

Eplan2022 复制已有的宏文件生成新的原理图宏文件

Eplan2022 新建原理图宏文件

haier123888的博客 1万+

SQL中LIKE条件常用的四种模糊查询

如select * from [userInfo] where user_name LIKE '长老[1-9]',将找出“长老1”、“长老2”、......、“长老9”。将会找出user_name为"张三",“李三”,“三脚猫”,“王三娃”等等有“三”的记录。将会把user_name为“张三娃”,“唐三藏”等等,三个字且中间一个字为“三”的找出来。将找出user_name不为“张三”、“王三”、“李三”的用户信息。将找处“张三”、“王三”、“李三”、“刘三”。

qq_50071874的博客 1万+

2025年抖音面试:商业生态与安全质量运营技能要求及面试

在商业生态与安全岗的质量运营工作中,规则运营职责占据着极为重要的地位,它是保障内容风控质量的关键环节。

王国平的博客 607

SQL中字符匹配的几种情况

查询sql中常用到 like 进行字段和字符之间的匹配1. 查询column_id列中以3-7开头(包含3,7)三四位为‘we’,第五位不包含a-c的数据Select *From table_nameWhere column_id like '[3-7]_we[^a-c]%'[]:匹配一个范围;   _:匹配一个任意字符;  [^]: 不匹配一个范围;  %: 匹配任意个字符  2.如果需要在 l...

yushuir的专栏 3977

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

在sql语句中,like所有的用法

在sql结构化查询语言中,like语句有着至关重要的作用。 like语句的语法格式是:select*from表名where字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。 A:% 包含零个或多个字符的任意字符串: 1、like'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。 2、like...

紫蝶侠的博客 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

sql 数据的like查询条件

LIKETransact-SQL 参考LIKE确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。如果任何参数都不属于字符串数据类型

Timesking的专栏 6341

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

sql语句like的用法 有些正则表达式可以通过like实现

在SQL结构化查询语言中,LIKE语句有着至关重要的作用。 LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。 假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据。现在我们要在姓名字段中查询以“张”字开头的记

shadowyelling的专栏 3万+

SQL LIKE 运算符:用法、示例和通配符解释

SQL LIKE 运算符:用法、示例和通配符解释

石头的博客 1258

sql数据的like查询条件

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 2515

mysql order by 运算_在MySQL中具有ORDER BY的多个LIKE运算符?

以下是使用ORDER BY实现多个LIKE运算符的语法-select*fromyourTableNameorderby(yourColumnNamelike'%yourValue1%')+(yourColumnNamelike'%yourValue2%')+..Ndesc;让我们创建一个表-mysql>createtabledemo2−>(−>idint...

weixin_39677104的博客 430

SQL中order by;group up;like;关联查询join on的用法

排序order by的用法: 1.order by 字段名1 asc/desc, 字段名2 asc/desc,... 先按照字段名1的升序/降续给表进行排列 然后 按照字段名2的升序/降续给表进行排列。 其中排在前面的字段名优先进行排列,排在后面的在前面的基础上在进行排列。 2.order by 字段序号 asc/desc, 字段序号 asc/desc,... 按照字段的序号进行排列,...

weixin_30666401的博客 470

sql中查找、修改、替换换行符和回车符

在数据库里查询换行符和回车符我们用 ascii码 10和13,即 chr(10)为换行符,chr(13)为回车符。查询出来后进行修改、替换。

m0_71559454的博客 1万+

SQL LIKE语句查询

在SQL结构化查询语言中,LIKE语句有着至关重要的作用。 LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。 假设有一个数据库中有个表table1,在table1中有两个字段,分别是name和sex二者全是字符型数据。现在我们要在姓名字段中查询以“张”字开头的记...

weixin_30933531的博客 3859

SQL中的like语句用法

SQL中的like语句用法

wenjiangwang的专栏 4452

Sql中的like用法

Like中的通配符包含有: 通配符 Description 示例 % 包含零个或多个字符的任意字符串。 WHERE title LIKE '%computer%'将查找在书名中任意位置包含单词"computer"的所有书名。 _(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean'将查找以e...

笑看江湖 6万+

order by /like增强的使用

查询增强的使用 -- 查询加强 -- ■ 使用where子句 -- ?如何查找1992.1.1后入职的员工 -- 老师说明: 在mysql中,日期类型可以直接比较, 需要注意格式 SELECT * FROM emp WHERE hiredate > '1992-01-01' -- ■ 如何使用like操作符(模糊) -- %: 表示0到多个任意字符 _: 表示单个任意字符 -- ?如何显示首字符为S的员工姓名和工资 SELECT ename, sal FROM emp WHERE e

NJUSTZJC的博客 303
上一篇: SQL备忘--子查询与ALL/ANY运算符
下一篇: SQL备忘--集合运算
郭Albert
博客等级 码龄14年 110粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭Albert

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值