《SQL必知必会——第6、7、8课:用通配符进行过滤、创建计算字段、使用函数处理数据》

本文主要是介绍《SQL必知必会——第6、7、8课:用通配符进行过滤、创建计算字段、使用函数处理数据》,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       第6课 用通配符进行过滤
       什么是通配符呢?本书没有具体说,相信大家都知道什么是通配符,在接触计算机过程中,通配符的概念应该早早建立了起来。我还是查了,百度百科上这么解释:“通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符”。这个差不多就是通配符的定义了,有了这个定义,对通配符的理解也就更加清晰了。那么在sql中如何使用通配符呢?那就是结合like操作符使用。注意通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。

       百分号(%)通配符,表示任意字符出现任意次数。通配符可以出现在任意位置,并且可以使用多个通配符,比如:select id, name from products where name like '%bag%',这样name字段中包含bag字符的行都将被检索出来。但%通配符也不是万能的,并不是可以匹配任何东西,那个例外就是NULL,比如上面的例子:select id, name from products where name like '%';不会匹配名称为NULL的行。

       下划线(_)通配符,用途与用法和%一样,唯一的区别是下划线通配符只匹配单个字符,百分号通配符可以匹配多个字符。所谓一个萝卜一个坑,说的就是下划线通配符。灵活性来讲百分号通配符更强大,但查询时也会更耗时。

       方括号([])通配符,因为我看书中介绍说只有微软Access和SQL Server支持,其他DBMS不一定支持,这里就不做过多介绍了。大体用法就是把要匹配的字符放进方括号通配符,因为只能匹配单个字符,所以更多场景还需要结合其他通配符一起使用才行。

       总体上,通配符很有用,但代价是查询非常耗时,谨慎使用。

       第7课 创建计算字段
       说到字段,有一个概念上的模糊不清的地方,那就是字段和列的区别,我在看本章以前也是傻傻分不清,或者说就没想过还有区别。那就是,对于数据库而言,是没有字段概念的,只有列的概念。而对于客户端来讲,也就是从数据库查询出数据,我们叫字段,也会叫列,这个是可以互换使用的。而字段,更严格一点应该叫计算字段,因为从数据库查询数据后,在这个过程中是可以对数据进行加工或者计算的,然后将结果作为最后的输出,所以本课标题叫创建计算字段,加工或计算出来的结果就是新创建的计算字段,这些字段在数据库中是没有对应列的,这里应该就明白为什么说对于数据库而言,只有列没有字段的概念了。举个例子,数据中表中有两列:name和country,那么我们可以把这两个值拼接起来作为输出结果。比如:select name + '(' + country + ')' as title from products order by name; 这样查询的数据就不会是两列,而是返回新的字段title,即拼接好的名称和产地,这里as关键字用于创建别名。对于客户端而言,会真实的认为title就是数据库的列,但title并不是数据库中的列。上面仅仅通过加号对字段进行拼接,实际还有很多操作,比如使用trim()函数去除空格,这样一看,就会发现很多编程语言都大同小异,java中去除空格是trim()函数,js中也是。除此之外,还可以进行算术计算,比如:select id, quantity, price, quantity*price as expanded_price from products where order_num=1234; 上面的语句理解起来很简单,这么做的好处是更简介、高效,客户端直接拿结果,而无须二次计算。不过,对于简单业务逻辑还行,稍微复杂一点的业务不建议这么做,灵活性不高、维护成本却高,还不便于测试。sql还是越简单越好,不要把业务逻辑写进sql。

       第8课 使用函数处理数据
       这一课可以说是第7课的延伸,第7课提到了在创建计算字段时,会使用一些函数,比如trim()去除字符串左右两边空格,本课继续介绍其他函数。对于文本,还有upper()和lower(),将字符串转为大写或者小写,length()返回字符串长度,等等;对于日期和时间,比如从日期中提取年份,有year(),日期加减有date_add()、date_sub()等;对于数值处理,有取绝对值abs(),计算平方根sqrt(),计算指数exp()等。这里就不一一介绍了,主要大家知道有这么一回事就行了,具体场景可以单独查某个函数用法。另外,不同的dbms,都会提供上述函数的功能,但函数名称可能不一样。

 

 

这篇关于《SQL必知必会——第6、7、8课:用通配符进行过滤、创建计算字段、使用函数处理数据》的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1114957

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd