逐浪云主机

立即开通

sql获取数组指定元素、仅取数字、仅取字母以及字段截取大全、

作者: 发布时间:2020-04-23 来源:本站原创 点击数:

截取如json格式的数组

需求:获取字符数组1,2,3的第2个元素

方法:通过自定义函数来实现

/*
       获取字符串数组某个元素
*/
if exists (select 1 from sysobjects where id = object_id('Get_StrArrayStrOfIndex' ))
   drop Function Get_StrArrayStrOfIndex
go
create function Get_StrArrayStrOfIndex
(
  @str varchar(5000 ),   -- 要分割的字符串
  @split varchar(10 ),   -- 分隔符号
  @index int                   --取第几个元素
)
returns varchar (5000)
as
begin
       declare @location int
       declare @start int
       declare @next int
       declare @seed int

       set @str =ltrim( rtrim(@str ))
       set @start =1
       set @next =1
       set @seed =len( @split)

       set @location =charindex( @split,@str )
       while @location <>0 and @index> @next
       begin
             set @start =@location+ @seed
             set @location =charindex( @split,@str ,@start)
             set @next =@next+ 1
       end

       if @location =0
             select @location =len (@str)+ 1

       return substring (@str, @start,@location -@start)
end
GO

用例:

print dbo.Get_StrArrayStrOfIndex('1,2,3',',',2)

SQL取字符串中的数字OR字母

/*功能:获取字符串中的字母*/
CREATE FUNCTION dbo.F_Get_STR (@S VARCHAR(100))
RETURNS VARCHAR(100)
AS 
BEGIN
    WHILE PATINDEX('%[^a-z]%',@S)>0
          BEGIN
                set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')
          END
    RETURN @S
END
GO
--测试
select  dbo.F_Get_STR('测试ABC123ABC')

GO
/*     
    功能:获取字符串中的数字
 */
create function dbo.F_Get_Number (@S varchar(100))
returns int
AS 
begin
    while PATINDEX('%[^0-9]%',@S)>0
          begin
                set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
          end
    return cast(@S as int)
end
--测试
---select  dbo.F_Get_Number('测试AB3C123AB5C')
GO

字符串函数截取(含mysql语法)

1、left(name,4)截取左边的4个字符

列:

SELECT LEFT(201809,4) 年

结果:2018

2、right(name,2)截取右边的2个字符

SELECT RIGHT(201809,2) 月份

结果:09

3、SUBSTRING(name,5,3) 截取name这个字段 从第五个字符开始 只截取之后的3个字符

SELECT SUBSTRING('成都融资事业部',5,3)

结果:事业部

4、SUBSTRING(name,3) 截取name这个字段 从第三个字符开始,之后的所有个字符

SELECT SUBSTRING('成都融资事业部',3)

结果:融资事业部

5、SUBSTRING(name, -4) 截取name这个字段的第 4 个字符位置(倒数)开始取,直到结束

SELECT SUBSTRING('成都融资事业部',-4)

结果:资事业部

6、SUBSTRING(name, -4,2) 截取name这个字段的第 4 个字符位置(倒数)开始取,只截取之后的2个字符

SELECT SUBSTRING('成都融资事业部',-4,2)

结果:资事

注意:我们注意到在函数 substring(str,pos, len)中, pos 可以是负值,但 len 不能取负值。

7、substring_index(‘www.baidu.com’, ‘.’, 2) 截取第二个 ‘.’ 之前的所有字符

SELECT substring_index('www.baidu.com', '.', 2)

结果:www.baidu

8、substring_index(‘www.baidu.com’, ‘.’, -2) 截取第二个 ‘.’ (倒数)之后的所有字符

SELECT substring_index('www.baidu.com', '.', -2)

结果:baidu.com

9、SUBSTR(name, 1, CHAR_LENGTH(name)-3) 截取name字段,取除name字段后三位的所有字符

SELECT SUBSTR('成都融资事业部', 1, CHAR_LENGTH('成都融资事业部')-3)

结果:成都融资

本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友