T-SQL——函数——字符串操作函数
0. 加号(+)
SELECT 'abc'+'123'结果:abc123
注意若是varchar 类型+int 类型,需要将int类型转换为varchar类型,方能作为字符串相加
SELECT 'abc' + CAST(18 AS VARCHAR(10)) 结果:abc18
1. LEFT和RIGHT
【定义】
LEFT()返回从左往右指定长度的子字符串。
RIGHT()返回从右往左指定长度的子字符串。【语法】
LEFT(expressionString,lengthInt)
RIGHT(expressionString,lengthInt)- 注意第二个参数是期望保留的长度
【示例】
SELECT LEFT('abc',2)返回ab
SELECT RIGHT('abc',2)返回bc
2. SUBSTRING
【定义】 SUBSTRING()函数用于从字符串中提取子串
【语法】
SUBSTRING(expressionString,startInt,lengthInt)对字符串string,从start索引位置开始,返回length长度的子字符串
注意这里的索引是从1开始数的
【示例】
SELECT SUBSTRING('abcdef',2,3)结果:bcd【注意】 若是期望从某个起始位置开始获取直到结尾的所有字符,可以使用一个比目标字符串长度还大的值作为截取子串的长度参数,SUBSTRING将返回最大起始位置到目标字符串的结尾,而不会将多出的长度以空格填充。
SELECT SUBSTRING('abc',1,9)结果是:"abc",而不是"abc "
3. LEN和DATALENGTH
【定义】
LEN函数返回指定字符串的字符数
DATALENTH返回的是指定字符串的字节数【语法】
LEN(expressionString)
DATALENGTH(expressionString)【示例】
SELECT LEN('abc')结果:3
SELECT LEN('张三')结果:2SELECT DATALENGTH('abc')结果:3
SELECT DATALENGTH(N'abc')结果:6
SELECT DATALENGTH('张三')结果:4【注意】
LEN函数是计算的是不包含尾随的空格,而DATALENGTH是会包含尾随的空格SELECT LEN('ab ')结果:2
SELECT DATALENGTH('ab ')结果:3
4. CHARINDEX和PATINDEX
【定义】
CHARINDEX用于寻找某一个字符在目标字符串第一次出现的起始位置(从1开始数)PATINDEX用于寻找某个模式的子字符串在目标字符串中第一次出现的起始位置
【语法】
- CHARINDEX(str2Find,str2Search)
- 注意第一个参数是待寻找的子串
- PATINDEX('%pattern%',str2Search)
- CHARINDEX(str2Find,str2Search)
【示例】
SELECT CHARINDEX('ab','abcab')结果:1- 这里'ab'在‘abcab'中出现两次,但是CHARINDEX函数返回的是第一次出现的位置
SELECT PATINDEX('%[0-9]%','abc123abc')结果:4
SELECT PATINDEX('a%','abc123')结果:1
SELECT PATINDEX('a_c%','abc123')结果:1- 这里的第一个参数是和LIKE谓词后的模式规则相同
5. REPLACE
【定义】REPLACE函数可以将目标字符串中所有出现的某个子字符串替换为指定的字符串
【语法】
REPLACE(expressionString,patternString,replacementString)【示例】
- 将字符串中的'ab'替换为'AB'
SELECT REPLACE('ab222ab333ab444','ab','AB')结果:AB222AB333AB444
- 将字符串中的'ab'全部删除(即全部替换为空格)
SELECT REPLACE('ab222ab333ab444','ab','')结果:222333444
- 将字符串中的'ab'替换为'AB'
6. REPLICATE和SAPCE
【定义】
REPLICATE用于将指定的字符串复制指定的次数SPACE用于返回指定长度的空格
【语法】
REPLICATE(expressString,nInt)
SPACE(nInt)【示例】
SELECT REPLICATE('abc',3)结果:abcabcabcSELECT DATALENGTH(SPACE(10))结果:10
7. STUFF
【定义】
将字符串中的一部分替换为另外一个子字符串。用于替换的子字符串不需要和被替换的部分长度一样。
【语法】
STUFF(expressionString,startInt,lengthInt,expressionString2)【示例】
将目标字符串中从第4个字符之后的三个字符替换为指定的字符串
SELECT STUFF('abc123def',4,3,'66666666')结果:abc66666666def将目标字符串中的第一个字符替换为空格(相当于删除目标字符串的第一个字符)
SELECT STUFF(',a,b,c',1,1,'')结果:a,b,c
8. REVERSE
【定义】用于将指定的字符串中的字符颠倒过来
【语法】
REVERSE(expressionString)【示例】
SELECT REVERSE('abc')结果:cba
9. UPPER和LOWER
【定义】将指定的字符串全部转换为大写或小写
【语法】
UPPER(expressionString)
LOWER(expressionString)【示例】
SELECT UPPER('aBc')结果:ABC
SELECT LOWER('aBc')结果:abc
10. LTRIM和RTRIM
【定义】用于将指定的字符串的前导空格和尾随空格删除
【语法】
LTRIM(expressionString)
RTRIM(expressionString)【示例】
- 删除字符串前端的空格
SELECT LTRIM(' abc')结果:abc - 删除字符串后端的空格
SELECT RTRIM('abc ')结果:abc - 同时删除字符串前后的空格
SELECT LTRIM(RTRIM(' abc '))结果:abc
- 删除字符串前端的空格
11. QUOTENAME
【定义】默认用于给指定的字符串外加一个方括号
这个函数的第二个参数是可选的,第二个参数只能是英文逗号(,)、英文引号(")或默认的方括号(])【语法】
QUOTENAME(expressionString,[character])【示例】
SELECT QUOTENAME('Name')结果:[Name]SELECT QUOTENAME('Name',')')结果:(Name)SELECT QUOTENAME('Name','"')结果:"Name"
12. 综合使用示例
删除字符串最后一位
DECLARE @a VARCHAR(100)='a,b,c,'
--SELECT LEN(@a)--结果:6
--法1
SELECT LEFT(@a,LEN(@a)-1)
--结果:a,b,c
--法2
SELECT STUFF(@a,LEN(@a),1,'')
--结果:a,b,c
计算某个字符串出现的次数
- 实现思路:将需要计算特定子串出现的次数,全部替换为空格,之后使原始长度减去替换后的长度,即为特定子串出现的次数
DECLARE @str VARCHAR(100)='abcabc'
DECLARE @oldLength INT =LEN(@str)--@oldLength=6
DECLARE @newStr VARCHAR(100)=REPLACE(@str,'a','')--@newStr=bcbc
DECLARE @newLength INT=LEN(@newStr)--@newLength=4
SELECT @oldLength-@newLength--结果:2
字符串统一长度,不足则前面补零
- 实现思路:甭管当前的长度,一律在该字符串前面加上9个0,之后在从右往左截取指定长度的子串作为结果值
DECLARE @tableVar TABLE
(
No VARCHAR(100) NOT NULL
);
INSERT INTO @tableVar
(
No
)
VALUES
('1'),
('12'),
('123'),
('1234'),
('1234');
--字符串统一长度为10,不足则前位补0
SELECT RIGHT(REPLICATE('0', 9) + No, 10)FROM @tableVar;--法1
SELECT REPLICATE('0', 10 - LEN(No)) + No AS NO FROM @tableVar;--法2
--结果
--0000000001
--0000000012
--0000000123
--0000001234
--0000001234
--字符串统一长度,不足则使用空格在后面补足
SELECT No + SPACE(10 - LEN(No)) FROM @tableVar;--法1
SELECT LEFT(NO+SPACE(10),10) FROM @tableVar;--法2
--验证上述操作:
SELECT DATALENGTH(No + SPACE(10 - LEN(No))) FROM @tableVar--验证法1
SELECT DATALENGTH( LEFT(NO+SPACE(10),10)) FROM @tableVar --验证法2
--结果:
--10
--10
--10
--10
--10
积累待补充中……
T-SQL——函数——字符串操作函数的更多相关文章
- Sql字符串操作函数
1.去空格函数 (1).LTRIM() 把字符串头部的空格去掉. (2).RTRIM() 把字符串尾部的空格去掉. 2.字符转换函数(1).ASCII()返回字符表达式最左端字符的ASCII 码值.在 ...
- SQL 字符串操作函数
SQL 字符串操作函数 学习了: https://www.cnblogs.com/wangzhe688/p/6046654.html 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的A ...
- [转]SQL Server字符串处理函数大全
select语句中只能使用sql函数对字段进行操作(链接sql server), select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不 ...
- Postgresql 字符串操作函数
样例测试: update property set memorial_no = btrim(memorial_no, ' ') where memorial_no like ' %' 或:update ...
- Postgresql数据库的一些字符串操作函数
今天做项目遇到客户反映了一个麻烦的事情,有一些数据存在,但就是在程序中搜索不出来,后来分析,发现问题为数据前面有几个空白字符,后来用SQL查询了一下,发现八九个数据表中,数千万条数据中有将近三百万条数 ...
- JavaScript中常见的字符串操作函数及用法
JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...
- C语言的常用字符串操作函数(一)
一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...
- sql server 字符串替换函数REPLACE
sql server 字符串替换函数REPLACE函数的使用 <pre name="code" class="sql">--参数1:需要替换字符的母 ...
随机推荐
- Javascript - Vue - webpack + vue-cil
cnpm(node package manager)和webpack模块 npm是运行在node.js环境下的包管理工具(先安装node.js,再通过命令 npm install npm -g 安装n ...
- RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列
系列文章: RabbitMQ从零到集群高可用(.NetCore5.0) - RabbitMQ简介和六种工作模式详解 RabbitMQ从零到集群高可用(.NetCore5.0) - 死信队列,延时队列 ...
- yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: 问题出现原因:yum包管理是使用python2 ...
- Shell中常用的语句
exit 完全中断脚本的执行 break 中断脚本的循环,但是会执行循环外的语句 continue 跳出本次循环,进行下一次循环 进一步了解三者的区别,有如下实验: 执行该脚本: 脚本正常运行情况: ...
- WEB漏洞——SQL
由于我的博客是学到渗透的时候才做的,没有关于WEB漏洞的笔记,现在发现WEB层面的漏洞有些不太熟悉了,边写一下笔记边复习一下,就从sql注入开始吧 话不多说先上大佬写的表[ctfhub]SQL注入 - ...
- NOIP模拟50
过分的神圣,往往比恶魔更加恶质. 前言 最大的一个收获就是不要动不动就码线段树,一定要审清楚题目之后再码!! T1 一开始理解错题了,以为答案是就是 \(\dfrac{\operatorname{le ...
- MongoDB 常见问题 - 解决 brew services list 查看 MongoDB 服务 status 显示 error 的问题
问题背景 将 MongoDB 作为服务运行 brew services start mongodb-community@4.4 也显示运行成功了,但是查看服务列表的时候,发现 MongoDB 服务的还 ...
- ☕【Java技术指南】「并发编程专题」CompletionService框架基本使用和原理探究(基础篇)
前提概要 在开发过程中在使用多线程进行并行处理一些事情的时候,大部分场景在处理多线程并行执行任务的时候,可以通过List添加Future来获取执行结果,有时候我们是不需要获取任务的执行结果的,方便后面 ...
- Kubernetes-Pod介绍(二)-生命周期
前言 本篇是Kubernetes第五篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...
- Qt+Python开发百度图片下载器
一.资源下载地址 https://www.aliyundrive.com/s/jBU2wBS8poH 本项目路径:项目->收费->百度图片下载器(可试用5分钟) 安装包直接下载地址:htt ...