mysql中取字符串中的数字的语句

代码如下:

one:
declare @s varchar(20)
declare @i varchar(20)
set @i=''
set @s='新会员必须购买350元产品'
while PATINDEX ('%[0-9]%', @s)>0
begin
set @i=@i+substring(@s,PATINDEX ('%[0-9]%', @s),1)
set @s=stuff(@s,1,PATINDEX ('%[0-9]%', @s),'')
end
select @i
--
300
two:
declare @a table(id int identity(1,1),a varchar(100))
insert @a select '新会员必须购买350元产品'
union all select '新店首次定货必须满20000元'

select left(right(a,len(a)-patindex('%[0-9]%',a)+1),len(right(a,len(a)-patindex('%[0-9]%',a)+1))-1) from @a

上在的

select substring(所查询字符串,patindex('%[^0-9][0-9]%',所查询字符串)+1,patindex('%[0-9][^0-9]%',所查询字符串)-patindex('%[^0-9][0-9]%',所查询字符串)) 这个只能查询第一次在字符串出现的数字串

那么如果出现字符串什么样子的呢 sss8989sss http://www.jb51.net ss8989ss8989ss8989 7879aafds789 432432432543534 应该怎么取呢

实例


代码如下:

create function fn_GetNum(@s varchar(8000))
returns varchar(8000)
as
begin
select @s = stuff(stuff(@s, 1, patindex('%[0-9, .]%', @s) - 1, ''),
patindex('%[^0-9, .]%', stuff(@s, 1, patindex('%[0-9, .]%', @s) - 1, '')),
len(@s), '')
return @s
end

declare @t table(s varchar(8000))
insert @t select 'aaa11112bbb'
union all select 'ccc212sss'
union all select 'sss21a'
select dbo.fn_GetNum(s) as result from @t

select substring(s,patindex('%[^0-9][0-9]%',s)+1,patindex('%[0-9][^0-9]%',s)-patindex('%[^0-9][0-9]%',s)) from @t

/*功能:获取字符串中的字母*/
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

这样之后不管你是那种组合我们都可以方便的把字符中的数字全部取出来。

(0)

相关推荐

  • mysql中取字符串中的数字的语句

    复制代码 代码如下: one: declare @s varchar(20) declare @i varchar(20) set @i='' set @s='新会员必须购买350元产品' while PATINDEX ('%[0-9]%', @s)>0 begin set @i=@i+substring(@s,PATINDEX ('%[0-9]%', @s),1) set @s=stuff(@s,1,PATINDEX ('%[0-9]%', @s),'') end select @i -- 3

  • javacript replace 正则取字符串中的值并替换【推荐】

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 问题: 在使用ueditor 富文本编辑器,给字体颜色时,发现getCent后的内容颜色为rgb 如 <span style="color: rgb(0, 0, 255);" >aaaaa </spa> 而前端需求rgb的读取不了,因此要转成16进制的颜色.找了uedtitor编辑器一圈,没找到方法. 因此.我想到的解决方法是,在提交保存之前,把富文本里的内容找出

  • 在JavaScript中查找字符串中最长单词的三种方法(推荐)

    本文基于Free Code Camp基本算法脚本"查找字符串中最长的单词". 在此算法中,我们要查看每个单词并计算每个单词中有多少个字母.然后,比较计数以确定哪个单词的字符最多,并返回最长单词的长度. 在本文中,我将解释三种方法.首先使用FOR循环,其次使用sort()方法,第三次使用reduce()方法. 算法挑战 返回提供的句子中最长单词的长度. 您的回复应该是一个数字. 提供的测试用例 findLongestWord("The quick brown fox jumpe

  • JS中判断字符串中出现次数最多的字符及出现的次数的简单实例

    JS中判断字符串中出现次数最多的字符及出现的次数的简单实例 <script type="text/javascript"> var str = 'qwertyuilo.,mnbvcsarrrrrrrrtyuiop;l,mhgfdqrtyuio;.cvxsrtyiuo'; var json = {}; //遍历str拆解其中的每一个字符将其某个字符的值及出现的个数拿出来作为json的kv for (var i = 0; i < str.length; i++) { //

  • php中替换字符串中的空格为逗号','的方法

    今天在网查到一篇介绍php中替换字符串中的空格为逗号','的文章,作个日记保存下来. 复制代码 代码如下: <pre name="code" class="php"><? php /* * 关键词中的空格替换为',' */ public function emptyreplace($str) { $str = str_replace(' ', ' ', $str); //替换全角空格为半角 $str = str_replace(' ', ' ',

  • Shell中统计字符串中单词的个数的几种方法

    Shell中求字符串中单词的个数的几种方法 方法一: [linux@host ~]# echo 'one two three four five' | wc -w 5 方法二: [linux@host ~]# echo 'one two three four five' | awk '{print NF}' 5 方法三: [linux@host ~]# s='one two three four five' [linux@host ~]# set ${s} [linux@host ~]# ech

  • Shell中判断字符串是否为数字的6种方法分享

    本篇文章主要介绍了"shell 判断字符串是否为数字",主要涉及到shell 判断字符串是否为数字方面的内容,对于shell 判断字符串是否为数字感兴趣的同学可以参考一下. #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers 第一个-n是shell的测试标志,对后面的串"`

  • shell基础学习中的字符串操作、for循环语句示例

    复制代码 代码如下: #!/bin/bashmy_name="jxq" echo $my_nameecho ${my_name} # ------------------------------------# 字符串操作# ------------------------------------ # 单引号字符串的限制,双引号没有这些限制:# 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的# 单引号字串中不能出现单引号(对单引号使用转义符后也不行)name="w

  • sqlserver中去除字符串中连续的分隔符的sql语句

    以下测试用于去除任何字符串中连线的分隔符 复制代码 代码如下: --去除字符串中连续的分隔符 declare @str nvarchar(200) declare @split nvarchar(200),@times int set @str='中 国1 2 34 55 5 6 7 7';--字符 set @split=' '; --分隔符 select @times=(len(@str)-len(replace(@str,@split+@split,'')))/2 while @times>

  • mysql实现将字符串字段转为数字排序或比大小

    目录 将字符串字段转为数字排序或比大小 排序 比大小 sql语句字符串如何比较大小 解决方法 将字符串字段转为数字排序或比大小 mysql里面有个坑就是,有时按照某个字段的大小排序(或是比大小)发现排序有点错乱.后来才发现,是我们想当然地把对字符串字段当成数字并按照其大小排序(或是比大小),结果肯定不会是你想要的结果. 这时候需要把字符串转成数字再排序. 最简单的办法就是在字段后面加上+0 如把'123'转成数字123(以下例子全为亲测): 排序 例: 方法一: ORDER BY '123'+0

随机推荐