平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“SQL中表的字符串内置函数”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
在这篇文章里,我会讲解表的字符串类的内置函数。
1. 字符串函数
实际处理时,下面这个表格是我们在下面要进行讲解的函数,我们现在这里轻松介绍了它们的名字以及他们的作用,这边之所以这么设计是因为我们学到后面的话这些函数我们已经了解了,这样先写在前面就便于我们查阅。
| 函数 | 函数 |
|---|---|
| charset(str) | 得到字符串字符集 |
| concat(string2 [, ……]) | 连接字符串 |
| instr(string, substring) | 得到 substring 在 string 中出现的位置,没有得到 0 |
| ucase(string2) | 转换成大写 |
| lcase(string2) | 转换成小写 |
| left(string2, length) | 从 string2 中的左边起取 length 个字符 |
| length(string) | string 的长度 |
| replace(str, search_str, replace_str) | 在 str 中用 replace_str 替换 search_str |
| strcmp(string1, string2) | 逐字符比较两字符串大小 |
| substring(str, position [,length]) | 从 str 的 postion 开始,取 length 个字符 |
| ltrim(string) rtrim(string) trim(string) | 去除前空格或后空格 |
这张图里面的表是我们下面在内容中所采用的。

1.1 charset(str)
这个函数的作用就是拿到要求的那一列的字符集。
语法:
select charset(列名) from 表名;
我们看下面这张图,我们这样采用就能够了。
PS:一般来说的话我们的编码都是utf8的。

1.2 concat(string2 [, ……])
从实现思路看,这个函数的话本质我认为就是临时性的字符串拼接。能够把一个表里面的内容拼接在一起,当然就算不是字符串类型的意义能够拼接到一起。
语法:
select concat(想要拼接的内容) as 要取的名字 from 表名;
我们来看下面这个图片,借助这样的方式就能够把代码拼接在一起。

1.3 instr(string, substring)
这个函数的话就是得到substring在string中出现的位置。
语法:
select instr(字符串,字符);
select instr(表内容,字符) form 表名;
落到代码里,我们看下面这个图片,借助这样的方式我们就能够找到o这个字符在helloworld这个字符串里面第一次出现的位置。当然如果这个字符出现多次的话会得到第一次出现的位置下标。

理解这一步时,我们看下面这个图片,这个函数会按照这个列的行数来得到,又因为只有第一列有a,其他两列没有,所以得到的值是1,0,0。

1.4 ucase(string2)
这个函数的话就是把字符串转换成大写。
语法:
select ucase(字符串);
select ucase(表列) from 表名;
我们看下面这个图片,这样写就能够得到字符串的大写了。

我们看下面这个图片,这样写就能够得到表中字符串的大写了。

1.5 lcase(string2)
这个函数的话就是把字符串转换成小写。
语法:
select lcase(字符串);
select lcase(表列) from 表名;
我们看下面这个图片,这样写就能够得到字符串的小写了。

我们看下面这个图片,这样写就能够得到表中字符串的小写了。

1.6 left(string2, length)
这个函数的话很轻松,就是得到前length个字符。
语法:
select left(string2, length);
我们看下面这个图片。这样就能够得到AAAaaa的前4个了。

要从右边开始去的话直接把left换成right就好。
1.7 length(string)
这个函数的话就是得到里面字符的长度。
语法:
select length(string);

1.8 replace(str, search_str, replace_str)
这个函数的话就是替换字符串里面的内容。
语法:
replace(原字符串, 要替换的子串, 替换后的子串)
我们看下面这个图片,借助这样的方式就能够完成替换,最重要的是在这里是区分大小写的。

1.9 strcmp(string1, string2)
这个函数的话就是逐字的比较两个字符串的大小(以ASCII码来比较大小)
语法:
select strcmp(string1, string2);
- 得到
0:当两个字符串完全相同时(长度和每个字符都一致)。 - 得到
1:当string1大于string2时(比较时从第一个不同的字符开始,string1的字符 ASCII 码更大)。 - 得到
-1:当string1小于string2时(同理,第一个不同字符的 ASCII 码更小)。
我们看下面这个图片,这样子得到的就是0。
1.10 substring(str, position [,length])
这个函数的话我觉得就类似于能够选开始位置的left()函数。
语法:
select substring(str, position [,length]);
我们看下面这个图片,就是从第三个位置开始往后拿到4个。
1.11 ltrim(string) rtrim(string) trim(string)
落到代码里,这个的话实际上是三个函数,只不过功能意义,只有一些细微上的差别,所以这边就直接放在一起了。他们三个都是用来去除字符串的空格的,只不过ltrim是去除字符串左边的空格,rtrim是去除字符串右边的空格,trim是去除字符串两边的空格。
语法:
select trim(string);
在这个场景下,我们看下面这个图片,其实这两个都实现了去重,只不过上面那个名字太大了,所以显的好像后面那部分没有去一样。

到此这篇关于SQL之表的字符串内置函数详解的文章就介绍到这了,更多相关sql表字符串内置函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!
- MySQL新建表时字符串的默认值问题
- mysql 字符串正则表达式及说明
- SQL Server中借助正则表达式替换字符串的方法
- mysql替换表中的字符串的sql语句
- SQL表的时间类内置函数举例详解
- Mysql内置函数的实现示例
- MySQL数据库内置函数采用说明
- MySQL常用内置函数以及其采用教程
- MySQL模糊查询用法大全(正则、通配符、内置函数)

