mysql获取数组前两数据类型,sql获取数组指定元素、仅取数字、仅取字母以及字段截取大全、...

截取如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)

结果:成都融资

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值