sql 截取字符串与 截取字符串最长的字符串
2015-10-23 09:42
387 查看
declare @str nvarchar(50); set @str='aa,32,22,55,7'; select charindex(',',@str,1) as '第一个逗号的索引值' select replace(replace(LEFT(@str,charindex(',',@str,1)-1),char(9),''),char(32),'') as '第一个值' select SUBSTRING(@str,charindex(',',@str,1)+1,len(@str)) as '从第一逗号开始截取出后面的字符串'
截取字符串最长的字符串,用的是自定义函数
ALTER function [dbo].[fun_ecom_string] ( @str varchar(500),--传入的字符串 @str2 varchar(50) --调用时候给空值,这个是用来保存最长字符串值的 ) returns varchar(50) as begin declare @result varchar(50) SET @str=replace(replace(@str,char(9),''),char(32),'') SET @result=@str --第一个逗号的索引值 if charindex(',',@str,1)=0 and len(@str2)=0 begin SET @result=@str end else if charindex(',',@str,1)=0 and len(@str2)>0 begin if len(@result)<len(@str2) begin SET @result=@str2 end end else begin SET @result=LEFT(@str,charindex(',',@str,1)-1) --第一个值 if len(@result)>len(@str2) begin SET @str2=@result end SET @str=SUBSTRING(@str,charindex(',',@str,1)+1,len(@str))--从第一逗号开始截取出后面的字符串 SET @result=dbo.fun_ecom_string(@str,@str2) end return @result end
调用测试结果:
select [dbo].[fun_ecom_string] ('98997378119101444444444443,503180004665,503144444444800046651,18919173781191013','') --结果:98997378119101444444444443
取字符串 以逗号 隔开中 最长的字符串 并且字符串是数字型的
ALTER function [dbo].[fun_ecom_string] ( /* 取字符串 以逗号 隔开中 最长的字符串 并且字符串是数字型的 ISNUMERIC 判断字符串是否为数字 */ @str varchar(500),--传入的字符串 @str2 varchar(50) --调用时候给空值,这个是用来保存最长字符串值的 ) returns varchar(50) as begin declare @result varchar(50) SET @str=replace(replace(@str,char(9),''),char(32),'') --SET @result=@str --第一个逗号的索引值 if charindex(',',@str,1)=0 and len(@str2)=0 begin SET @result=@str end else if charindex(',',@str,1)=0 and len(@str2)>0 begin if ISNUMERIC(@result)=0 begin SET @result=@str2 end else if ISNUMERIC(@result)=1 and len(@result)<len(@str2) begin SET @result=@str2 end end else begin SET @result=LEFT(@str,charindex(',',@str,1)-1) --第一个值 if len(@result)>len(@str2) and ISNUMERIC(@result)=1 --ISNUMERIC 判断字符串是否为数字 begin SET @str2=@result end SET @str=SUBSTRING(@str,charindex(',',@str,1)+1,len(@str))--从第一逗号开始截取出后面的字符串 SET @result=dbo.fun_ecom_string(@str,@str2) end return @result end
相关文章推荐
- Sql Server 数据分页
- What’s New in MySQL 5.7? (Generally Available)
- Oracle查找表的外键引用关系
- 关于oracle比较时间的用法
- oracle几个服务的作用
- LR通过snmp监控linux下的mysql
- 【SQL】按每5分钟生成全天的时间列表
- 免安装oracle客户端数据库,使用PL/SQL连接服务器oracle数据库
- sql server 执行大.sql文件
- 【SQL】9i数据库level层次深度的限制
- mysql 2013错误解决
- mysql 的卸载、再安装与常用命令
- oracle home/bin 下的oracle权限导致ORA-01078和Linux-x86_64 Error故障
- 未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken
- [MSSQL]磁盘空间&SQL日志&作业执行情况
- Sql 2005 维护笔记
- 如何rename datafile name中存在乱码的数据文件
- Mybatis之动态构建SQL语句
- redis数据类型
- ERROR 2003 (HY000): Can't connect to MySQL server on