SQL截取字符串替换
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 | 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截取字符串替换相关推荐
- SQL截取字符串(substring与patindex的使用)
SQL截取字符串(substring与patindex的使用) 首先学习两个函数 1.substring 返回字符.binary.text 或 image 表达式的一部分. 基本语法:S ...
- Java,SQL 截取字符串substring
一.Java截取字符串 substring 1.方法一: public String substring(int beginIndex, int endIndex) 该方法用于截取字符串中,从begi ...
- oracle截取字符串替换,oracle字符串操作:拼接、替换、截取、查找
'拼接'||'字符串' as Str from student; 2.使用concat(param1,param2)函数实现: select concat('拼接','字符串') as Str fro ...
- php模拟get提交 字符串截取 字符串替换 示例源码
<?php $qq = $_GET[qq]; //获取http://gxtest.sinaapp.com/get.php?qq=843516495网址的QQ参数843516495 $url = ...
- sql server字符串替换函数REPLACE
使用REPLACE(替换字符串)函数REPLACE函数将字符串中的子字符串替换为指定字符串. 语法: REPLACE (string_expression1, string_expression2, ...
- oracle截取字符串替换,oracle操作字符串:拼接、替换、截取、查找、长度、判断...
1.拼接字符串 1)可以使用"||"来拼接字符串 select '拼接'||'字符串' as str from dual 2)通过concat()函数实现 select conca ...
- SQL截取字符串合辑
文章目录 1. substring_index 2. left/right/mid/substring 1. substring_index 语法:substring_index(字符串,分隔符,序号 ...
- SQL截取字符串,SQL分割字符串函数,SQL字符串按指定的字符拆分
-- 截取字符串函数: -- SUBSTRING_INDEX(str, delim, count)-- str: 要处理的字符串. -- delim: 分割符,将str分割成两部分. -- count ...
- SQL——截取字符串常用函数
截取字符串常用函数 1.LEFT ( ) 2.RIGHT ( ) 3.SUBSTRING ( ) 1.LEFT ( ) \quad \quad从字符串最左边开始截取即正向截取,返回从字符串左边开始指定 ...
最新文章
- CUDA统一内存分析
- python在代码里查看获取模块信息
- Android怎么设置主活动,如何从另一个活动启动Android AppWidget的配置活动?
- 【Caffe实践】基于Caffe的人脸识别实现
- 纯干货!文字识别在高德地图数据生产中的演进
- C/C++代码的混合使用
- google +按钮_如何禁用或改善Google的Google+集成
- 求最大公约数——欧几里得算法(JAVA)
- 信息学奥赛一本通(1206:放苹果)
- python实操训练300题_如何练习python?有这五个游戏,实操经验就已经够了
- 瑞昱网通芯片RTL8305NB-CG应用介绍
- thymeleaf模板获取markdown数据后,渲染到页面上(showdown.js)
- 什么样的项目算是成功的?项目目标有什么特点?
- 计算机应用基础18秋在线作业2奥鹏,奥鹏15春北航《计算机应用基础》在线作业2答案...
- C语言 共享内存实现进程间通信
- 最短路径 floyd最小环 洛谷2738 篱笆回路 网上题解
- 【通信系统仿真系列】基于Matlab的汉明码(Hamming Code)纠错传输以及交织编码(Interleaved coding)仿真
- 用Java写一个最简单的图形用户界面
- 淘宝优惠券查询API接口
- bintray_与Bintray更好的开发人员对开发人员的协作
热门文章
- DOS批处理实现“自动FTP批量上传文件”功能
- JavaScript 的三座大山
- CPU缓存与性能优化
- 批处理命令 删除文件
- Java BufferedReader读文件中文乱码
- JSON转Map的几种方式
- Java配置jdbc连接数据库不限制ip设置方法(localhost/127.0.0.1/本机ip地址)
- centos 挂载移动硬盘
- Unity性能分析工具合集(Profile Analyzer,Memory Profiler,UPR,UWA)
- YOLOV3代码与原理相互结合的理解(重点在特征图的输出的元素的解析)