【SQLSERVER】如何找出字符串中的数字
可以通过写自定义函数实现,以下提供两种思路来解决:
1、通过正则匹配,找到字符串中的数字,一个一个拼起来
/*方法一: 一个一个找出来*/
CREATE FUNCTION [dbo].[Fun_GetNumPart]
( @Str NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @Start INT;
DECLARE @End INT;
DECLARE @Part NVARCHAR(MAX)
SET @Start = PATINDEX('%[0-9]%', @Str);
SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));
SET @Part = SUBSTRING(@Str,@Start,1)
WHILE @End >0
BEGIN
SET @Start = @start+@End
SET @Part = @Part+SUBSTRING(@Str,@Start,1)
SET @End = PATINDEX('%[0-9]%',SUBSTRING(@Str, @Start+1,LEN(@Str) - @Start));
END RETURN @Part;
END;
2、通过正则逆向匹配,找到字符串中的非数字,一个一个去掉
/*方法二:一个一个去掉*/
CREATE FUNCTION [dbo].[Fun_GetNumPart]
( @Str NVARCHAR(MAX) )
RETURNS NVARCHAR(MAX)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@Str)>0
BEGIN
SET @Str=STUFF(@Str,PATINDEX('%[^0-9]%',@Str),1,'') --删掉非数字的字符
END
RETURN @Str
END
效果如下图:

延伸:
可以通过将函数中的 '%[0-9]%' 替换成 '%[A-Z]%'、'%[吖-做]%',,改造成找字母、找中文的函数
【SQLSERVER】如何找出字符串中的数字的更多相关文章
- 剑指Offer 找出字符串中第一个只出现一次的字符
		题目描述 找出字符串中第一个只出现一次的字符 如果无此字符 请输出'.' 输入描述: 输入一串字符,由小写字母组成 输出描述: 输出一个字符 输入例子: asdfasdfo 输出例子: o 思路:数组 ... 
- 找出字符串中第一个不重复的字符(JavaScript实现)
		如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. //找出字符串中第一个不重复的字符 // firstUniqueChar("vdctdvc"); --& ... 
- SQL Server 2008 R2——创建函数 筛选出字符串中的数字 筛选出字符串中的非数字
		=================================版权声明================================= 版权声明:本文为博主原创文章 未经许可不得转载 请通过右 ... 
- js常会问的问题:找出字符串中出现次数最多的字符。
		一.循环obj let testStr = 'asdasddsfdsfadsfdghdadsdfdgdasd'; function getMax(str) { let obj = {}; for(le ... 
- C/C+面试题一:找出字符串中出现最多的字符和次数,时间复杂度小于O(n^2)
		已知字符串"aabbbcddddeeffffghijklmnopqrst"编程找出出现最多的字符和次数,要求时间复杂度小于O(n^2) /********************* ... 
- [LeetCode] Find All Anagrams in a String 找出字符串中所有的变位词
		Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ... 
- 【easy】438.Find All Anagrams in a String 找出字符串中所有的变位词
		Input: s: "abab" p: "ab" Output: [0, 1, 2] Explanation: The substring with start ... 
- [LeetCode] 438. Find All Anagrams in a String 找出字符串中所有的变位词
		Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ... 
- python 找出字符串中出现次数最多的字母
		# 请大家找出s=”aabbccddxxxxffff”中 出现次数最多的字母 # 第一种方法,字典方式: s="aabbccddxxxxffff" count ={} for i ... 
随机推荐
- 【OpenCV】透视变换矫正
			演示结果参考: 功能实现:运行程序,会显示图片的尺寸,按回车键后,依次点击需矫正的图片的左上.右上.左下.右下角,并能显示其坐标,结果弹出矫正后的图片,如图上的PIC2对话框.可以继续选择图片四个点进 ... 
- 报错 Filtered offsite request
			用scrapy框架迭代爬取时报错 scrapy日志: 在 setting.py 文件中 设置 日志 记录等级 LOG_LEVEL= 'DEBUG' LOG_FILE ='log.txt' 观察 scr ... 
- Hadoop学习之路(二十六)MapReduce的API使用(三)
			影评案例 数据及需求 数据格式 movies.dat 3884条数据 1::Toy Story (1995)::Animation|Children's|Comedy 2::Jumanji (1995 ... 
- 文件断点上传,html5实现前端,java实现服务器
			断点上传能够防止意外情况导致上传一半的文件下次上传时还要从头下载,网上有很多关于断点的实现,这篇文章只是从前到后完整的记录下一个可用的实例,由于生产环境要求不高,而且就是提供给一两个人用,所以我简化了 ... 
- easyUi的一些常用方法
			目录: 1.获取表格的pageNumber和pageSize 2.获取/设置下拉列表的选中值 3.下拉列表的输入框的禁用 1.获取表格的pageNumber和pageSize var pageNumb ... 
- .net core RabbitMQ 消息队列
			上篇我们说到erlang的安装,现在有了基础前提,就可以继续安装RabbitMQ了! 这里我选用的RabbitMQ版本是: PS:这个RabbitMQ版本是要对应前面erlang版本,所以前面我们安装 ... 
- Exp6 信息收集与漏洞扫描 20164314
			一.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 二.实践内容 1.各种搜索技巧的应用 2.DNS IP注册信息的查询 3.基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务 ... 
- maven 编译替换占位符
			首先开启资源配置的插件,由此插件替换占位符 <plugin> <groupId>org.apache.maven.plugins</groupId> <art ... 
- 学习使用 ARM 的 math 库,据说 速度比C标准库  自带的 快 几十倍 到几百倍
			1.首先 添加 库 到 工程 ,路径 如下 C:\Keil\ARM\CMSIS\Lib\ARM 2.包含头文件以及在 工程里 添加 头文件 路径如下 C:\Keil\ARM\CMSIS\Includ ... 
- 设置eclipse默认编码格式
			Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window->Prefere ... 
