从各种位置截取字符串的SQL语法

来源:互联网 发布:电脑碎片整理软件 编辑:程序博客网 时间:2024/05/01 19:15

已知: 字段A='F:/photo/Winter Leaves.jpg'  
要求:分段截取每段字符[字段A不能为TEXT类型,否则报错]

解决方法:

---截取字符串A的第一个/左边的字符串
select left(A,charindex('/',A)-1)
输出结果:F:


---截取/中间的字符串
select  left(stuff(A,1,charindex('/',A),''),charindex('/',stuff(A,1,charindex('/',A),''))-1)
输出结果:photo


---截取最后一个/后面的字符串
select  reverse(left(reverse(A),charindex('/',reverse(A))-1))
输出结果:Winter Leaves.jpg
 

---截取字符串A的首字幕
select  STUFF(A,1, 1, '')
输出结果::/photo/Winter Leaves.jpg

注:分段截取每段字符[字段A不能为TEXT类型,否则报错].

 

--分别返回分隔符前后的字符串

declare @path varchar(max)
 set @path='jfkj/jfkidjf/gt.jpg※.jpg'
--分隔符前
select left(@path,charindex('※',@path)-1)
--分隔符后
select right(@path,charindex('※',reverse(@path))-1)


REVERSE( string_expression )  返回字符串值的逆向值。
  参数
string_expression
string_expression 是字符串或二进制数据类型的表达式。string_expression
可以是常量、变量,也可以是字符列或二进制数据列。

  返回类型
varchar 或nvarchar


  注释
string_expression 的数据类型必须可隐式转换为 varchar。否则,请使用 CAST 显式转换 string_expression。

在sql里有,从左边查询字符出现的位置,没有从右边的,想了很长时间,变通一点就实现了。
  declare @s nvarchar(10)
   declare @dd nvarchar(50)
declare @sp_name nvarchar(50)
set @sp_name='wang.ji.kun.wav'
   set @dd=REVERSE(@sp_name)
      set @s=substring( @dd,0,charindex('.',@dd,0))
select reverse(@s)
 

原创粉丝点击