1.substring函数——截取字符串

SUBSTRING ( expression, start, length )

expression——字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。

start——整数或可以隐式转换为int 的表达式,指定子字符串的开始位置。

length——整数或可以隐式转换为 int 的表达式,指定子字符串的长度

left(field,length) ——函数返回field最左边的length个长度的字符串

right(field,length)——函数返回field最右边的length个长度的字符串

eg1:取定长定位置的字符串

select substring('abdcsef',1,3)

result:  abd

2.CHARINDEX函数——返回字符或者字符串在另一个字符串中的起始位置

 

CHARINDEX ( expression1 , expression2 [ , start_location ] ) ——  CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。  

CHARINDEX('SQL', 'Microsoft SQL Server')

这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。

eg1:取不定长不同位置的字符串

我们只想要得到'roomno'中的房间号,发现起始字符位置并不是固定的,而且,我们需要的房间号长度也不固定。

此时,我们可以运用‘charindex’这个函数就可以轻松搞定,它是用来定位某个特定字符在该字符串中的位置,即该函数

得到的结果是一个用来表示某个特定字符位置的数字。执行如下代码:

select
room_stand=substring(roomno,charindex('元',roomno)+1,charindex('室',roomno)-charindex('元',roomno)-1)
from PROPERTY_room
where roomno like '%单元%室%' 

result:

3.STUFF函数——删除指定长度的字符,并在指定的起点处插入另一组字符。

STUFF ( character_expression , start , length ,character_expression )

SELECT STUFF('abcde', 2, 3, '123')

result: a123e

4.patindex函数——返回pattern字符串在表达式expression里第一次出现的位置,起始值从1开始算。

1. PATINDEX ( '%pattern%' , expression )——'%pattern%'的用法类似于 like '%pattern%'的用法,也就是模糊查找其pattern字符串是否是expression找到,找到并返回其第一次出现的位置。

eg1:

select patindex('%abb%','abcaabbeeabb')

结果5,也就是abb第一次出现的位置。

2.PATINDEX ( '%pattern' , expression )——'%pattern' 类似于 like '%pattern'的用法,前面用模糊查找,也就是查找pattern的结束所在expression的位置,也就是从后面匹配起查找。

eg2:

select patindex('%abb','abcaabbeeabb')

返回10,也就是abb在后面第一次出现的位置。

select patindex('%abb','abcaabbeeabbr')

返回0,后面的第一个字母r和abb不匹配,所以返回0

3.PATINDEX ( 'pattern%' , expression )——这就相当于精确匹配查找,也就是pattern,expression完全相等。

eg3:

select patindex('abb%','abbcaabbeeabb')

返回1,也就相当于起始值

select patindex('abb%','arbbcaabbeeabb')

返回0,开头找不到就返回0,后面无论有多少都不管。

4.PATINDEX ( 'pattern' , expression )——这就相当于精确匹配查找,也就是pattern,expression完全相等。

select patindex('abb','abb')

返回1,完全相等

select patindex('abb','abbr')

返回0,不完全相等

5. patindex('%[pattern]%','ddabcaabbeeabbr'),

patindex('%[^pattern]%','ddabcaabbeeabbr')

在此先说[]的用法,[]是指定某些特殊的字符。[^]除[]之外的字符串,[]这其中的每一个

如:

Symbol Meaning

LIKE '5[%]' 5%

LIKE '[_]n' _n

LIKE '[a-cdf]' a, b, c, d, or f

LIKE '[-acdf]' -, a, c, d, or f

LIKE '[ [ ]' [

LIKE ']' ]

LIKE 'abc[_]d%' abc_d and abc_de

LIKE 'abc[def]' abcd, abce, and abcf

如:

select patindex('%[d]%','rcrdsddddaadadffdr')

返回4,[]中d在字符串rcrdsddddaadadffdr的第一次出现的位置。

select patindex('%[cd]%','rcrdsdddrdaadadffdr')

返回2,[]中c,d在其中一个的位置,返回最先出现的这个位置,c在此字符串里第一次出现位置是2,而d是4,结果取最先的那个。

select patindex('%[sd]%','rcrdsdddrdaadadffdr')

返回4,[]中c,d在其中一个的位置,返回最先出现的这个位置,s在此字符串里第一次出现位置是5,而d是4,结果取最先的那个。

select patindex('%[^r]%','rrrdsdddrdaadadffdr')

返回4,除[]中的字符串的匹配字符,第一次出现d不在[^r]里,所以就找到第一次这位。

select patindex('%[^rd]%','rrrdsdddrdaadadffdr')

返回5,除[]中的字符串的匹配字符,第一次出现s不在[^rd]里,所以就找到第一次这位。

select patindex('%[^rsd]%','rrrdsdddrdaadadffdr')

返回11,除[]中的字符串的匹配字符,第一次出现a不在[^rsd]里,所以就找到第一次这位。

eg:去除括号及括号内内容(批量化处理)

--> 测试数据:#
if object_id('tempdb.dbo.#') is not null drop table #新建临时表
create table #(col varchar(46))
insert into #
select '重庆唯远实业有限公司(2009年01月05日)' union all
select '江苏苏美达船舶工程有限公司(2009年01月05日)' union all
select '上海启门机电有限公司(2009年01月04日)' union all
select '小洋人生物乳业集团有限公司(2009年01月04日)' union all
select '沈阳鼎冷机电设备有限公司(2009年01月04日)' union all
select '嘉柏(中国)国际货运代理有限公司(2008年12月31日)' union all
select '广州宝洁有限公司(2008年12月31日)' union all
select '烟台华科食品有限公司(2008年12月31日)' union all
select '艾来得机械(上海)有限公司(2008年12月31日)' union all
select '上海晓舟船舶配件有限公司(2008年12月31日)' union all
select '上海力弘包装器材有限公司(2008年12月31日)'/*
------------------------------
重庆唯远实业有限公司
江苏苏美达船舶工程有限公司
上海启门机电有限公司
小洋人生物乳业集团有限公司
沈阳鼎冷机电设备有限公司
嘉柏(中国)国际货运代理有限公司
广州宝洁有限公司
烟台华科食品有限公司
艾来得机械(上海)有限公司
上海晓舟船舶配件有限公司
上海力弘包装器材有限公司
*/

解决方案一:

select reverse(stuff(reverse(col), 1, charindex('(', reverse(col)), '')) from #

解决方案二:

update tb
set col = reverse(substring(reverse(col) ,charindex('(',reverse(col)) + 1 , len(col)))
select * from tb

解决方案三:

select
left(name,patindex('%([0-9][0-9][0-9][0-9]年%',name)-1) as name from [tb]

解决方案四:

select left(col,len(col) - 13) from tb

sql常用函数详解(一)——字符串截取相关推荐

  1. MySql截取字符串的几个常用函数详解

    MySql截取字符串的几个常用函数详解 MySQL 截取字符的几个常用函数:left(), right(), substring(), substring_index(),mid(), substr( ...

  2. blankcount函数python,Python pandas常用函数详解

    本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...

  3. QT:常用函数详解--常用操作记录(个人笔记)

    QT:常用函数详解(个人笔记) PS:一下内容个人笔记,要求自己看懂,随笔,阅读体验会很差很差! Qt setContentsMargins()函数 函数原型:void QLayout::setCon ...

  4. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

  5. 【Python入门】Python之OS模块39个常用函数详解

    os,语义操作系统,所以该模块就是操作系统相关的功能了,用于处理文件和目录这些我们日常手动需要做的操作,比如新建文件夹.获取文件列表.删除某个文件.获取文件大小.重命名文件.获取文件修改时间等,该模块 ...

  6. el replace 表达式_EL表达式运算符、常用函数详解

    运算符: 1.算术运算符有五个:+.-.*或$./或div.%或mod 2.关系运算符有六个:==或eq.!=或ne.或gt.<=或le.>=或ge 3.逻辑运算符有三个:&&am ...

  7. numpy随机生成01矩阵_Python数据分析Numpy库常用函数详解,提到循环就该想到的库...

    Python进行数据分析的核心库肯定是Pandas,该库差不多可以解决结构化数据的绝大部分处理需求.在<Python数据分析常用函数及参数详解,可以留着以备不时之需 >一文中也已经对该库的 ...

  8. 详解Mysql字符串截取left()、right()、substring()、substring_index()具体用法(一)

    文章目录 一.left() 二.right() 三.截取特定长度的字符串 1.从字符串第4个字符开始直结束 2.从字符串第4个字符开始,只取2个 3.从字符串倒数第4个字符开始直至结束 4.从字符串倒 ...

  9. linux网络编程常用函数详解与实例(socket--bind--listen--accept)

    常用的网络命令: netstat 命令netstat是用来显示网络的连接,路由表和接口统计等网络的信息.netstat有许多的选项我们常用的选项是 -an 用来显示详细的网络状态.至于其它的选项我们可 ...

  10. db2locate函数_DB2常用函数详解

    VALUE函数 语法:VALUE(EXPRESSION1,EXPRESSION2) VALUE函数是用返回一个非空的值,当其第一个参数非空,直接返回该参数的值,如果第一个参数为空,则返回第一个参数的值 ...

最新文章

  1. Linux输入输出I/O
  2. 【程序员趣味】用Python制作带字小人举牌
  3. Android中的URI
  4. SAP Spartacus界面注册用户获取OAuth Access Token的方式
  5. 曼哈顿距离和欧拉距离
  6. 开发提效小技巧分享(二)
  7. 入门物联网需要服务器
  8. 最全最好的Tracker地址目录
  9. Kinect:少年你步履蹒跚是不是没睡好
  10. ActiveMQ 之安全认证
  11. linux考试不及格反思100字,考试没考好的反思总结(精选10篇)
  12. vulhub 8.1-backdoor漏洞复现
  13. yum 装包时,提示Peer cert cannot be verified or peer cert invalid
  14. 这一刻我學會了堅強、給我一雙翅膀,我会向天空去翱翔。
  15. Centos7磁盘阵列部署与修复
  16. QT 交叉编译 ARM / CSKY
  17. 解决单点故障 - 有状态服务的高可用
  18. FFmpeg修改源码支持H265
  19. OBS (Open Broadcast Software) Studio - RTMP 推流与 ffplay/vlc 播放 .m3u8
  20. 3288 配置声卡芯片

热门文章

  1. spring读取jdbc(file方式)
  2. Rank() 、DENSE_RANK()、NTILE(n)的用法-转
  3. 使用derby导入mongodb数据
  4. 【ASP.NET】 GriedView 增删改查+ 自带分页
  5. 英特尔曾遭“经验老道”的黑客攻击
  6. IDEA 工具从Json自动生成JavaBean
  7. bzoj 相似回文串 3350 3103 弦图染色+manacher
  8. springboot问题记录
  9. 粗略写了使用GD2制作文字图像demo
  10. 十八、完成登录与注册页面的前端