首页 > 其他分享 >字符串处理函数

字符串处理函数

时间:2023-09-25 12:07:01浏览次数:39  
标签:string 查询 SQL 字符串 处理函数 SELECT 函数

1,字符串串联运算符

2,SUBSTRING提取子串

3,LEFT和RIGHT

4,LEN和DATALENGTH

5,CHARINDEX函数

6,PATINDEX函数

7,REPLACE替换

8,REPLICATE复制字符串

9,STUFF函数

10,UPPER和LOWER函数

11,RTRIM和LTRIM函数 

字符串串联运算符

由于业务需要,有的时候我们需要将两个字段(列)组合起来,中间加上分隔符,然后输出。这时我们就会用到字符串串联运算符[+]号。例如,我们对Employees表中的firstname,空格和lastname列串联起来,生成完整的姓名fullname列。

SQL查询代码:

-- 设置数据库上下文
USE TSQLFundamentals2008;
GO

-- fullname是串联运算符串联后的结果
SELECT empid,firstname,lastname,firstname+N' '+lastname AS fullname 
FROM hr.Employees

查询结果:

字符串处理函数_bc

需要注意的是,ANSI SQL规定对NULL值执行串联运算后也会产生NULL值的结果,这是SQL Server的默认行为。当然,可以通过将名为CONCAT_NULL_YIELDS_NULL的会话选项设置为OFF来改变SQL Server的默认处理方式,但是要记得,在处理完成后要设置回原来的ON状态。


SUBSTRING提取子串

SUBSTRING函数用于从字符串中提取子串。例如,以下代码返回字符串‘abc’.

SQL查询代码:

SELECT SUBSTRING('abcde',1,3);

查询结果:

字符串处理函数_bc_02

注意:1,一般开始位置是从1开始的。

   2,如果第二个参数和第三个参数的和超过了整个字符串的长度,则函数会返回从起始位置开始,直到字符串结尾的整个字符串而不会引起错误。当需要返回从某个位置开始,直到结尾的所有内容时,可以指定一个非常大的值或者表示整个字符串的长度的值就可以。


LEFT和RIGHT

LEFT和RIGHT函数是SUBSTRING的简写形式,它们分别返回输入字符串从左或右边开始的指定个数的字符。例如,以下代码返回字符'cde'。

SQL查询代码:

SELECT RIGHT('abcde',3);

查询结果跟SUBSTRING一样。LEFT的使用同RIGHT。


LEN和DATALENGTH

LEN函数返回输入字符串的字符数。而DATALENGTH函数返回输入字符串的字节数。需要注意它们的区别。LEN的语法形式为:LEN(string),DATALENGTH的语法形式为:DATALENGTH(string)

例如,以下代码返回字符串的字符数5

SQL查询代码:

SELECT LEN(N'abcde');

查询结果输出:5

而如果使用DATALENGTH函数则输出:10。


CHARINDEX函数

CHARINDEX函数返回字符串中某个子串第一次出现的起始位置。它的语法形式为:CHARINDEX(substring,string[,start_pos]),该函数在第二个参数(string)中搜索第一个参数(substring),并返回其起始位置,可以选择性地指定第三个参数(start_pos),以便告诉这个函数从字符串的什么位置开始搜索,如果不指定的话,则从字符串的第一个字符串开始搜索。如果在string中找不到substring,则函数返回0。

例如,以下代码在'trac mcgrady'中查找第一个空格的位置,结果将返回5

SQL查询代码:

SELECT CHARINDEX(' ','trac mcgrady');


PATINDEX函数

PATINDEX函数返回字符串中某个模式第一次出现的起始位置。它的语法形式为:PATINDEX(pattern,string)

例如,我们需要在字符串中找到第一次出现数字的位置。

SQL查询代码:

SELECT PATINDEX('%[0-9]%','abcd123efgh');

查询结果:5


REPLACE替换

REPLACE函数将字符串中出现的某个子串替换为另一个字符串。它的语法形式为:REPLACE(string,substring1,substring2),该函数会将string中出现的所有substring1替换为substring2。

例如,以下代码将输入字符串中的所有连字符(-)替换为冒号(:)

SQL查询代码:

SELECT REPLACE('1-a 2-b','-',':');

查询结果:1:a 2:b


REPLICATE复制字符串

REPLICATE函数以指定的次数复制字符串值。它的语法形式为:REPLICATE(string,n)

例如,以下代码将字符串‘abc’复制三次,返回字符串'abcabcabc'。

SQL查询代码:

SELECT REPLICATE('abc',3);

查询结果:'abcabcabc'

下面这个例子显示了REPLICATE函数,以及RIGHT函数和字符串串联的用法。以下对Production.Suppliers的查询为每个供应商的整数ID生成一个10位数字的字符串表示(不足10位时,前面补‘0’)

SQL查询代码:

-- 设置数据库上下文
USE TSQLFundamentals2008;
GO

SELECT supplierid,
    RIGHT(REPLICATE('0',9)+CAST(supplierid AS VARCHAR(10)),10) AS strsupplierid
FROM Production.Suppliers
ORDER BY supplierid

查询结果:

字符串处理函数_字符串_03


STUFF函数

STUFF函数可以先删除字符串中的一个子串,然后再插入一个新的子串作为替换。它的语法形式为:STUFF(string,pos,delete_length,insertstring)

例如,以下代码对字符串‘xyz’进行处理,先删除其中的第二个字符,再插入字符串'abc'.

SQL查询代码:

SELECT STUFF('xyz',2,1,'abc');

查询结果:'xabcz'


UPPER和LOWER函数

UPPER和LOWER函数用于将输入字符串中的所有字符都转换为大写或小写形式。它们的语法形式为:UPPER(string),LOWER(string)。

例如,第一个函数返回'TRAC MCGRADY',第二个函数返回'trac mcgrady'。

-- 返回'TRAC MCGRADY'
SELECT UPPER('trac mcgrady');

-- 返回‘trac mcgrady’
SELECT LOWER('Trac Mcgrady');


RTRIM和LTRIM函数

RTRIM和LTRIM函数用于删除输入字符串的尾部空格和前导空格。它们的语法形式为:RTRIM(string),LTRIM(string)。如果既想删除前导空格,也想删除尾部空格,则可以将一个函数的结果作为另一个函数的输入来使用。例如,以下代码会删除输入字符串的前导空格和尾部空格,最后返回‘abc’

SQL查询代码:

-- 返回'abc'
SELECT RTRIM(LTRIM(' abc '));

标签:string,查询,SQL,字符串,处理函数,SELECT,函数
From: https://blog.51cto.com/u_14682436/7594179

相关文章

  • 入门篇-其之四-字符串String的简单使用
    什么是字符串?在Java编程语言中,字符串用于表示文本数据。字符串(String)属于引用数据类型,根据String的源码,其头部使用class进行修饰,属于类,即引用数据类型。字符串的表示字符串使用双引号""表示,在双引号中你可以写任意字符。和前面定义并初始化基本数据类型的变量一样,定义最简单......
  • golang 对字符串进行base64编解码、md5 编码
    内容来自对chagpt的咨询一、对字符串进行base64编解码base64编码要在Go语言中对字符串进行base64编码,你可以使用标准库中的encoding/base64包。以下是一个简单的示例:packagemainimport( "encoding/base64" "fmt")funcmain(){ data:="Hello,World!" enc......
  • sqlserver判断字符串是否是数字
    sql2005有个函数ISNUMERIC(expression)函数:当expression为数字时,返回1,否则返回0。这只是一个菜鸟级的解决办法,大多数情况比较奏效。eg:selectISNUMERIC('123')--结果为1但是,该函数有个缺点!eg:复制代码 SELECT  ,ISNUMERIC('-')as'-'  --1 ,ISNUMERIC('+')as'+'  -......
  • python字符串的运用
    字符串str字符串[切片位置,按几个几个来切]center(填补个数,符号)两边填补Count(计算符号,区域)计算数字endweith(判断的东西)判断结尾Startweith(同上)判断开头Find(同上)字符查找isdigit是不是整数isdecimal是不是小数"连接符".join("l")拼接字......
  • 字符串转16进制,16进制转Base64 哈哈哈 uf65/rn+
    测试:哈哈哈uf65/rn+场景描述:对接java接口,字符串转16进制再转base64;遇到转换不一样问题;后来定位对方编码格式不对; privatevoidTest(){stringstr="哈哈哈";str=GetHexByString(str,Encoding.GetEncoding("GB18030"));//Encodi......
  • nodejs 字符串、数组、对象之间的相互转换
    vararr=['a','b','李四']varstr=JSON.stringify(arr)console.log(typeofstr)varobj={name:'liuneng',age:56,sex:'女'}varstr1=JSON.stringify(obj)console.log(typeofstr1)//字符串转对象//对字符串要求很高,需要单引号包住双......
  • SpringBoot返回字符串乱码如何解决
    场景:controller某个接口是直接返回字符串,用于测试的。当返回中文字符串的时候乱码。解决方法:在controller的映射加上produces="text/html;charset=utf-8"示例:@RequestMapping(value="/ping",produces="text/html;charset=utf-8")publicStringping(){return"pon......
  • C语言-字符串相关库函数用法+模拟实现
    常见的与字符串有关的库函数strstr()寻找子字符串strcat()字符串追加函数strcmp()字符串比较函数strcpy()字符串拷贝函数strlen()求解字符串长度...1.strstr()寻找子字符串我们先来看MSDN中对该函数的功能描述:Findasubstring.(寻找子......
  • C语言-字符串相关库函数用法+模拟实现
    常见的与字符串有关的库函数strstr()寻找子字符串strcat()字符串追加函数strcmp()字符串比较函数strcpy()字符串拷贝函数strlen()求解字符串长度...1.strstr()寻找子字符串我们先来看MSDN中对该函数的功能描述:Findasubstring.(寻找子......
  • 算法题——定义一个方法自己实现 toBinaryString 方法的效果,将一个十进制整数转成字符
    用除基取余法,不断地除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼起来即可。privatestaticStringtoBinaryString(intnumber){StringBuildersb=newStringBuilder();while(true){if(number==0)break;intyushu=num......