sql中where截取字符串字符

length) 开始截取字符串 说明right(被截取字

篇:【Excel2019(十五):条件格式与公式】【使用简单条件格式+定义多重条件条件格式+使用公式定义条件格式】 文章目录 使用文本截取字符串 lEFT函数和MID函数 RIGHT函数 综合应用 获取文本信息 FIND函数 LEN函数和LENB函数 身份证应用 GB 使用文本截取字符串 lEFT函数和MID函数 原数据 公式 结果 RIGHT函数 原数据 公式

该数据集基于Oracle的SCOTT用户下的员工、部门等表,详见如下链接:

需求:通过SQL生成一个1到1000条记录.

解决方法:通过CTE的递归来实现该需求.

1.1.2 遍历字符串里的每个值

需求:打印出ename为’King’的名字里每一个字母,每个字母占一行.

解决方法:通过自增表和emp表先cross join(笛卡尔积),然后再通过ename的len(ename的长度)进行过滤,最终得到显示每个字母的结果.

2: 如果不明白,可以分段来看.

这里通过SUBSTRNG函数,每次的开始位置不断调整,每次仅取一个字符,再通过LEN函数过滤.所以得到最终结果.如果不熟悉SUBSTRING的语法,这里简单介绍下.

  • 参数expression是要截取的原始字符串,比如这里的” KING”
  • 参数start是要截取的位置,比如从第2个位置开始,那应该从” I”往后数.
  • 参数length是要截取的长度,沿用上一行的例子,如果长度定义为2,则最终截取字符串是” IN”

1.1.3 处理含引号的字符串

解决方法:这里有位引号是特殊符号,所以需要特殊处理,比如如果双引号包裹起来.

1.1.4 计算某个字符出现的次数

注:这里除以LENGTH('S')是为了考虑传入的字符串是2位以及以上的情况,比如’SS’.

1.1.5 字符串里过滤不需要的字符

需求:过滤tmp_v视图里含数字的部分. 其中tmp_v视图的data字段的定义是emp表的ename字段拼接空格和deptno字段。

解决方法:这里通过translate函数对含数字的部分进行替换.

注:这里需要参考之前章节里translate函数的实现.

1.1.6 拆分字符串里的字符和数字

1.1.7 判断字符串是字符串数字型

需求:检索temp_str data表的字段data是字符串数字类型的记录这里如果都是字符串或者数字的也符合条件.

-- 或者用如下方法,思路通过判断截取的每个字符的ASCII值来判断区间是否落在[48,57],[97,122],落在的为0,反之为1,然后再通过对该Flag进行sum来判断,如果等于0则说明数字字符型的.

-- 利用正则表达式来匹配
 

1.1.8 判断字符串含有汉字

需求:检索含有汉字的字符串.

LENGTH:是计算字节的长度.一个汉字是算三个字符,一个数字或字母算一个字符

CHAR_LENGTH:汉字、数字、字母都算是一个字符

或者通过字符串的十六进制并结合REGEXP来判断.

1.1.9 合并多行到一行

需求:将emp表里deptno相同的ename以逗号拼接在一起.

解决方法:这里通过字符串合并函数完成该效果.如group_concat

Step5: 查询满足条件的记录,即按deptno分组的empno数和自增序号相同的记录.

  1. 查看构建的递归数据.这里以depto=10的为例:
  1. 不难发现,这里高亮处的数据是我们想要的,所以通过如下方式获取最终结果:
--延展阅读:如果仅想获得某一个分组下的字符串合并,也可以按照如下方法:
 

1.1.10 对字符串重新按字母排序重新组合

需求:将emp表里ename按照字母顺序重新组合生成新的字符.

解决方法:这里通过字符串合并函数或者结合substring和row_number完成该效果.

注: 如果想在CTE里使用[]排序,需要在查询里指定TOP.

除非另外还指定了 TOP、OFFSET 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

1.1.11 判断一个字符是否是数字

需求:将临时表里判断data字段里哪些是数字.

--或者使用正则表达式:
 

1.1.12 按照指定的位置截取字符

需求:按照逗号拆分字符串,取拆分出来的第二个子串.

解决方法:这里需要自定义函数结合substring截取字符串,以达到该效果.

Step1: 首先借助自增表将data字段里的数据按照逗号的数目切分,如果有2个逗号,则会切分成3部分

Step3:借助自增表的num,取指定分割位置的数据,这里是2.

1.1.13 按照指定的分隔符截取字符返回表形式

需求:按照逗号拆分字符串,并指定返回的格式是表.

解决方法:这里需要自定义函数结合substring截取字符串,以达到该效果.

2) 这里STRING_SPLIT的分隔符仅支持单字符,多字符会报如下错误.

我要回帖

更多关于 sql substring截取字符串 的文章

 

随机推荐