总结SQL相对常用的几个字符函数

目录

字符的截取

substr()

trim()、ltrim()、rtrim()

字符串的拼接

||、+

字符的大小写转换

upper('column_name'):大写

lower('column_name'):小写

字符替换

replace()

搜索字符

[instr(column_name, 'substring_to_find',start,n_appearence)](#instr(column_name, 'substring_to_find',start,n_appearence))

[charindex('substring_to_find', column_name[,START])](#charindex('substring_to_find', column_name[,START]))

通配符

小例子

rowid


字符的截取

substr()

在 sqlserver 中是 substring,不过参数一样,但是不能缺少长度,也就不会默认到末尾

sql 复制代码
select substr('str',start[,length]) from xx

从 start 开始,截取长度为 lenth 的字符,其中空格长度为1

trim()、ltrim()、rtrim()

sql 复制代码
SELECT TRIM([ '目标str' from] '源str') FROM xx

从源 str 两边、左边、右边开始截取目标 str,缺省 目标字符串时截取空格

字符串的拼接

||、+

oracle 中可连接多个字符串,SqlServer 里可以用 + 进行连接

(SqlServer)

(Oracle)

除此之外,Oracle 也可用concat ('str1','str2') 函数拼接,这种方法只能拼接两个字符串

字符的大小写转换

upper('column_name'):大写

lower('column_name'):小写

sql 复制代码
select * FROM emp;
sql 复制代码
select lower(job) FROM emp;

字符替换

replace()

将源字符串中的某些字符替换,格式:

sql 复制代码
select replace('string_expression', string_pattern, string_replacement) from xxx
  • string_expression:要进行替换的字符串,如某一列或某个字串
  • string_pattern:要被替换的 string
  • string_replacement:所进行替换的 string

搜索字符

instr(column_name, 'substring_to_find',start,n_appearence)

  • column_name:列名,可以为字符串
  • substring_to_find:需要搜索的字符串
  • start:搜索的起始位置
  • n_appearence:第n次出现
sql 复制代码
select instr('abc-def-abc-xyz','-'),
	   instr('abc-def-abc-xyz','-',5),
 	   instr('abc-def-abc-xyz','-',5,2),
	   instr('abc-def-abc-xyz','-',-1)
from dual;

该函数是在 Oracle 中可以使用的

比如:第三列 str 中第五位开始查找字符 '-' 第 2 次出现的位置,未找到将返回0,第一个字符下标记为1

charindex('substring_to_find', column_name[,START])

SqlServer 中可用该方法实现同样效果,但其参数位置不同,且没法限定目标字符出现的次数,最多也只有三个参数

通配符

是与 LIKE 一起使用进行模糊搜索字符的符号

%、_:匹配多个或一个字符

sql 复制代码
SELECT * FROM EMP
sql 复制代码
SELECT * FROM EMP WHERE JOB LIKE 'M%' [escape 特殊字符]
--注意字符的小写

后面的 escape:

  • 用法一:当字符串本身含有 % 或 _ 时,避免其当做通配符
  • 用法二:当需要剔除某字符(如每个数据都有*号,直接匹配会每个数据都返回),那我可以escape '*' 忽略掉这个字符

此外,对字符串出现 % 或 _ 也可以用反斜杠 \ 对其忽略

小例子

对 oracle 中自带的 EMP 表进行字符处理

sql 复制代码
SELECT emp.*,rowid FROM EMP;

摘出需要进行替换的字母

sql 复制代码
SELECT emp.*,substr(rowid,-5) FROM EMP;

进行替换

sql 复制代码
SELECT emp.*,replace(rowid,substr(rowid,-5),'*****') FROM EMP;

rowid

这个 rowid 是在 oracle 中记录每一行数据在插入数据库时分配的物理地址(是唯一的字符串)

相关推荐
南城花随雪。11 分钟前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了13 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度14 分钟前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮17 分钟前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9991 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98762 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发
武子康2 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
苏-言2 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
Ljw...2 小时前
索引(MySQL)
数据库·mysql·索引