截取字符串中的最后一个斜杠后的所有字符:
SELECT A.PIC_URL,
RIGHT(A.PIC_URL,(CHARINDEX('/',REVERSE(A.PIC_URL))-1))
FROM DBO.TXT_PIC A;
SQL Server 中截取字符串常用的函数:
1.LEFT ( character_expression , integer_expression )
函数说明:LEFT ( '源字符串' , '要截取最左边的字符数' )
返回从字符串左边开始指定个数的字符
select LEFT('SQL_Server_2008',4 );
返回结果:SQL_
2.RIGHT ( character_expression , integer_expression )
函数说明:RIGHT ( '源字符串' , '要截取最右边的字符数' )
返回字符串中从右边开始指定个数的 integer_expression 字符
select RIGHT('SQL_Server_2008',4 );
返回结果:2008
3.SUBSTRING ( character_expression , start , length )
函数说明:SUBSTRING ( '源字符串' , '截取起始位置(含该位置上的字符)' , '截取长度' )
返回字符、binary、text 或 image 表达式的一部分
select SUBSTRING('SQL_Server_2008',5 ,6);
返回结果:Server
sql server中截取字符串的常用函数
我们如果要在sql server中,使用截取字符串的方法要怎样使用呢?
sql server提供了3个常用截取字符串方法,LEFT()、RIGHT()、SUBSTRING()
复制代码
/****** Sql Server中截取字符串的常用方法 ******/
--1、LEFT()方法---
--函数说明---
--1)语法:LEFT(character,integer)
--2)介绍:参数1:要截取的字符串,参数2:截取字符个数
--3)使用:
--返回从字符串左边开始指定个数的字符--
select LEFT('SqlServer_2008',3)
--4)返回:Sql
--1、RIGHT()方法---
-- right()函数说明---
--1)语法:RIGHT(character,integer)
--2)介绍:参数1:要截取的字符串,参数2:截取字符个数
--3)使用:
--返回从字符串右边开始指定个数的字符--
select LEFT('SqlServer_2008',4)
--4)返回:2008
--1、SUBSTRING()方法---
-- substring()函数说明---
--1)语法:SUBSTRING(character,start,length)
--2)介绍:参数1:要截取的字符串,参数2:开始截取的下标,参数3:截取的字符长度
--3)使用:
--返回从字符串中间的字符--
select SUBSTRING('SqlServer_2008',4,6)
--4)返回:Server
复制代码
实例如下:
复制代码
--截取字符串左边3个字符--
select LEFT('Welcome to China!',7) as 结果1
--截取字符串右边4个字符--
select RIGHT('Welcome to China!',6) as 结果2
--截取字符串中间6个字符(第二个从哪个字符下标开始)
select SUBSTRING('Welcome to China!',9,2) as 结果3
实例结果:
实例结果:
首先建一张测试表:
create table teststring(name nvarchar(100));
insert into teststring
values
('张三,李四,王五,马六,萧十一,皇宫');
1.判断字符串中某字符(字符串)出现的次数,第一次出现的位置最后一次出现的位置:
查看’,’出现的次数
select LEN(name)-LEN(REPLACE(name,',','')) from teststring;
查看’,’第一次出现的位置:
select CHARINDEX(',',name) from teststring;
查看’,’最后一次出现的位置:
select len(name)-(CHARINDEX(',',REVERSE(name))-1) from teststring;
2.取出以’,’分隔开的字符(串),这个例子中就是’张三’、’李四’等
这是有规律的,首先应该想到有没有特定的系统函数实现,好像没有,其次就应该想到循环了。
当我把’张三’取出后,怎样把’张三,’去掉呢?
取’张三’不难,
select SUBSTRING(name,1,CHARINDEX(',',name)-1) from teststring;
如何把’张三,’去掉呢?开始我也不知道,baidu、google啊,关键字sql、split吧,总之我也是搜的
select STUFF(name,1,CHARINDEX(',',name),'') from teststring;
好像用replace也能实现
select REPLACE(name,substring(name,1,CHARINDEX(',',name)),'') from teststring;
那现在就差循环了,我很少写存储过程或函数的,语法都不记得,用的时候现查(经常用就记得了),我都写匿名的存储过程,哈哈
create table teststring2(name nvarchar(100));
declare @name nvarchar(100);
select @name= name from teststring;
while(CHARINDEX(',',@name)<>0)
begin
insert into teststring2 select SUBSTRING(@name,1,CHARINDEX(',',@name)-1);
set @name=STUFF(@name,1,CHARINDEX(',',@name),'');
set @i=@i+1;
end
insert into teststring2
select @name
select * from teststring2就可以看到了。
这只是表中只有一个字段的,如果多的话,用表变量应该就可以了。
表变量我也不会,之前用过一次,用过就忘记了,偶尔用一次!知道有这个东西就好了,至少遇到问题思考时能想到这东西。
以上都是基于我最近做公司考勤时候用的,大概就是php的网页,姓名文本框里需要输入用户姓名,但是一次输入一个,得添加多次,如果我把后台数据库姓名这字段设置大些,一次就可以输入多个姓名,但姓名与姓名之间用逗号隔开,我就可以在数据库里处理了。