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 截取字符串与 截取字符串最长的字符串的更多相关文章

  1. 输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)

    首先,要求找到最长最短字符串,我们应该用数组将其存起来,输入的个数是不固定的,我们就可以用Scanner获取要输入的个数,最终找到的个数也不固定,我们可以封装两个方法,并且返回值类型为数组. 我遇到的 ...

  2. python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串

    1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...

  3. Python求包含数字或字母最长的字符串及长度

    一.求包含数字或字母最长的字符串及长度 org = 'ss121*2222&sdfs2!aaabb' result = [] #保存最终要输出的字符串 result_temp = [] #保存 ...

  4. sql和access中截取字符串的区别

    一向对数据库不熟悉,今天又遇到简单而又被忽略的问题——字符串的截取. 在Excel处理数据过程中,我们常用substring,left,mid,right来截取字符:在.NET编程中,我们常用subs ...

  5. SQL使用UPDATE和SUBSTRING截取字符串方法,从头截取到某个位置,截取中间片段,字符串中间截取到末尾或删除前面的字符串

    //从头截取 update 表名 set 表列名 =SUBSTRING(表列名,1,目标位置数值)  //!计数从1开始,从左往右 where 条件   //条件自己选择,不加where条件会更新所有 ...

  6. java 正则匹配空格字符串 正则表达式截取字符串

    java 正则匹配空格字符串 正则表达式截取字符串 需求:从一堆sql中取出某些特定字符串: 比如配置的sql语句为:"company_code = @cc and project_id = ...

  7. python中字符串操作--截取,查找,替换

    python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...

  8. .NET string字符串的截取、移除、替换、插入

    在实际开发中经常要用到string的各种截取等操作,在这里总结自己认为经常出现的.NET 字符串的截取.移除.替换.插入操作,方面以后查阅. 前台代码: <%@ Page Language=&q ...

  9. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

    怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...

随机推荐

  1. smb

    smb编辑 SMB(Server Message Block)是协议名,它能被用于Wap连接和客户端与服务器之间的信息沟通.

  2. 压缩js和css, IIS开启Etags, IIS开启Gzip

    我们在前端页面性能调优时,经常会压缩js和css,下面列出几个比较好用的在线工具. http://www.jb51.net/tools/jsmin/index.htm http://javascrip ...

  3. ubuntu下git输出的颜色变化

    (这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 11点进家门,感觉很温暖哦. 以下是如何在用git的时候清晰的看出关键字的方法. $ vim ...

  4. hdu4255筛素数+广搜

    Mr. B has recently discovered the grid named "spiral grid".Construct the grid like the fol ...

  5. ubuntu 修改保存报错E37:No write since last change(add ! to override)的解决方法

    报错信息如下: E37: No write since last change (add ! to override) 解决办法是: 在修改完后,将命令 :q 改成 :wq 即可.

  6. 已知局域网IP地址,如何查看mac

    arp -a 加对方IP是查对方的MAC地址 转自: http://zhidao.baidu.com/link?url=8sRdpGcjfGQ-C1F9zNub49Mxe3DAR-RCAHDkHvKC ...

  7. 【云计算】docker daemon如何提供Restful的API

    Docker Remote API 如何使用? docker 的 Remote API 定义如下: 这个API看着是http协议的但是我用 curl http://127.0.0.1:4243/con ...

  8. mysql中的unsigned

    unsigned   既为非负数,用此类型可以增加数据长度! 例如如果    tinyint最大是127,那    tinyint    unsigned    最大   就可以到    127 * ...

  9. malloc/free vs new/delete

    malloc/new是库函数. new/delete是运算符. 对于非内部数据类型的对象而言,光用malloc/free 无法满足动态对象的要求.对象在创建的同时要自动执行构造函数, 对象在消亡之前要 ...

  10. Java for LeetCode 073 Set Matrix Zeroes

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 解题思路: ...