SQL截取字符串替换

  • 字符串截取
    • 1. left()截取左边
    • 2. right()截取右边
    • 3. SUBSTR() / SUBSTRING() 截取
      • SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符:
      • SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符:
      • SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束:
      • SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符:
      • substring_index('www.baidu.com', '.', 2) 截取第二个 '.' 之前的所有字符
      • substring_index('www.baidu.com', '.', -2) 截取第二个 '.' (倒数)之后的所有字符:
      • SUBSTR(name, 1, CHAR_LENGTH(name)-3) 截取name字段,取除name字段后三位的所有字符:
  • 字符串替换
    • 1. 字段为null的时候替换为0
    • 2. 字段中包含qq替换为163
    • 3. 字段某值替换为某值
    • 4. 有值则使用, 无值则替换
    • 5. 条件true则用value1, 否则用value2

首先申明,substr()是基于Oracle的,substring()是基于SQL Server的,切记不可混用,否则会报错!

MySQL: SUBSTR( ), SUBSTRING( )
Oracle: SUBSTR( )
SQL Server: SUBSTRING( )

语法区别 MySQL Oracle
/ truncate(123.123,2) TRUNC(123.123,2)
空值返0 IFNULL、COALESCE nvl、nvl2
时间转换为字符串型时间 date_format(NOW(),’%Y-%m-%d’) to_char(sysdate, ‘YYYY-MM-DD’)
字符串型时间转换为时间类型 date_format(NOW(),’%Y-%m-%d’) date_format(NOW(),’%Y-%m-%d’)
获取字符串长度 SELECT char_length(str) SELECT length(str)
整形转换字符串 CAST(123 AS CHAR(3)) to_char(123)
字符串转整型 cast(‘123’ as SIGNED) to_number(‘123’)
连表 select * from ta left join tb on ta.id=tb.id; #左关联 select * from ta right join tb on ta.id=tb.id; #右关联 select * from ta, tb where ta.id = tb.id(+); #左关联 select * from ta, tb where ta.id(+) = tb.id; #右关联
排序 select * from USER A order by IF(ISNULL(A.REMARK),1,0),A.REMARK desc ; select * from USER A order by IF(ISNULL(A.REMARK),0,1),A.REMARK desc SELECT * FROM USER A ORDER BY A.REMARK DESC NULLS FIRST; SELECT * FROM USER A ORDER BY A.REMARK DESC NULLS LAST

字符串截取

1. left()截取左边

left(name,4)截取左边的4个字符 :

SELECT LEFT(201809,4) 年

结果:2018

2. right()截取右边

right(name,2)截取右边的2个字符:

SELECT RIGHT(201809,2) 月

结果:09

3. SUBSTR() / SUBSTRING() 截取

SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符:

SELECT SUBSTRING('一二三四五六七',5,3)

结果:五六七

SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符:

SELECT SUBSTRING('一二三四五六七',3)

结果:三四五六七

SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束:

SELECT SUBSTRING('一二三四五六七',-4)

结果:四五六七

SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符:

SELECT SUBSTRING('一二三四五六七',-4,2)

结果:三四五六七

注意:我们注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。

substring_index(‘www.baidu.com’, ‘.’, 2) 截取第二个 ‘.’ 之前的所有字符

SELECT substring_index('www.baidu.com', '.', 2)

结果:www.baidu

substring_index(‘www.baidu.com’, ‘.’, -2) 截取第二个 ‘.’ (倒数)之后的所有字符:

SELECT substring_index('www.baidu.com', '.', -2)

结果:baidu.com

SUBSTR(name, 1, CHAR_LENGTH(name)-3) 截取name字段,取除name字段后三位的所有字符:

SELECT SUBSTR('一二三四五六七', 1, CHAR_LENGTH('一二三四五六七')-3)

结果:一二三四

字符串替换

1. 字段为null的时候替换为0

SELECT coalesce(exp1,exp2,…) as info FROM table1

SELECT id,pass_word,COALESCE(pass_word,0) FROM sys_user
id pass_word COALESCE(pass_word,0)
1 admin123456 admin123456
2 null 0

2. 字段中包含qq替换为163

SELECT id,email,REPLACE(email,'qq','163') FROM sys_user
id email REPLACE(email,‘qq’,‘163’)
1 8050627@qq.com 8050627@163.com
2 15502266662@126.com 15502266662@126.com

3. 字段某值替换为某值

Oracle关键字为 DECODE

SELECTid,status,
CASEstatusWHEN 0 THEN'停用' WHEN 1 THEN'启用' ELSE '未知' END AS statusName
FROMsys_user
id status statusName
1 0 停用
2 1 启用
3 2 未知

4. 有值则使用, 无值则替换

Oracle关键字为 nvl

select id,status, IFNULL(status,'无状态') from sys_user
id status IFNULL(status,‘无状态’)
1 0 停用
2 1 启用
3 null 无状态

5. 条件true则用value1, 否则用value2

Oracle关键字为 nvl2

select id,status, IF(status=1,'启用','停用') from sys_user
id status IF(status=1,‘启用’,‘停用’)
1 0 停用
2 1 启用
3 2 停用

SQL截取字符串替换相关推荐

  1. SQL截取字符串(substring与patindex的使用)

    SQL截取字符串(substring与patindex的使用) 首先学习两个函数 1.substring  返回字符.binary.text 或 image 表达式的一部分.       基本语法:S ...

  2. Java,SQL 截取字符串substring

    一.Java截取字符串 substring 1.方法一: public String substring(int beginIndex, int endIndex) 该方法用于截取字符串中,从begi ...

  3. oracle截取字符串替换,oracle字符串操作:拼接、替换、截取、查找

    '拼接'||'字符串' as Str from student; 2.使用concat(param1,param2)函数实现: select concat('拼接','字符串') as Str fro ...

  4. php模拟get提交 字符串截取 字符串替换 示例源码

    <?php $qq = $_GET[qq]; //获取http://gxtest.sinaapp.com/get.php?qq=843516495网址的QQ参数843516495 $url = ...

  5. sql server字符串替换函数REPLACE

    使用REPLACE(替换字符串)函数REPLACE函数将字符串中的子字符串替换为指定字符串. 语法: REPLACE (string_expression1, string_expression2, ...

  6. oracle截取字符串替换,oracle操作字符串:拼接、替换、截取、查找、长度、判断...

    1.拼接字符串 1)可以使用"||"来拼接字符串 select '拼接'||'字符串' as str from dual 2)通过concat()函数实现 select conca ...

  7. SQL截取字符串合辑

    文章目录 1. substring_index 2. left/right/mid/substring 1. substring_index 语法:substring_index(字符串,分隔符,序号 ...

  8. SQL截取字符串,SQL分割字符串函数,SQL字符串按指定的字符拆分

    -- 截取字符串函数: -- SUBSTRING_INDEX(str, delim, count)-- str: 要处理的字符串. -- delim: 分割符,将str分割成两部分. -- count ...

  9. SQL——截取字符串常用函数

    截取字符串常用函数 1.LEFT ( ) 2.RIGHT ( ) 3.SUBSTRING ( ) 1.LEFT ( ) \quad \quad从字符串最左边开始截取即正向截取,返回从字符串左边开始指定 ...

最新文章

  1. CUDA统一内存分析
  2. python在代码里查看获取模块信息
  3. Android怎么设置主活动,如何从另一个活动启动Android AppWidget的配置活动?
  4. 【Caffe实践】基于Caffe的人脸识别实现
  5. 纯干货!文字识别在高德地图数据生产中的演进
  6. C/C++代码的混合使用
  7. google +按钮_如何禁用或改善Google的Google+集成
  8. 求最大公约数——欧几里得算法(JAVA)
  9. 信息学奥赛一本通(1206:放苹果)
  10. python实操训练300题_如何练习python?有这五个游戏,实操经验就已经够了
  11. 瑞昱网通芯片RTL8305NB-CG应用介绍
  12. thymeleaf模板获取markdown数据后,渲染到页面上(showdown.js)
  13. 什么样的项目算是成功的?项目目标有什么特点?
  14. 计算机应用基础18秋在线作业2奥鹏,奥鹏15春北航《计算机应用基础》在线作业2答案...
  15. C语言 共享内存实现进程间通信
  16. 最短路径 floyd最小环 洛谷2738 篱笆回路 网上题解
  17. 【通信系统仿真系列】基于Matlab的汉明码(Hamming Code)纠错传输以及交织编码(Interleaved coding)仿真
  18. 用Java写一个最简单的图形用户界面
  19. 淘宝优惠券查询API接口
  20. bintray_与Bintray更好的开发人员对开发人员的协作

热门文章

  1. DOS批处理实现“自动FTP批量上传文件”功能
  2. JavaScript 的三座大山
  3. CPU缓存与性能优化
  4. 批处理命令 删除文件
  5. Java BufferedReader读文件中文乱码
  6. JSON转Map的几种方式
  7. Java配置jdbc连接数据库不限制ip设置方法(localhost/127.0.0.1/本机ip地址)
  8. centos 挂载移动硬盘
  9. Unity性能分析工具合集(Profile Analyzer,Memory Profiler,UPR,UWA)
  10. YOLOV3代码与原理相互结合的理解(重点在特征图的输出的元素的解析)