点击关注上方“SQL数据库开发”,

设为“置顶或星标”,第一时间送达干货SQL专栏SQL基础知识第二版
SQL高级知识第二版

前天写了篇《SQL如何提取字符串中的字母?》,今天再教大家如何提取中文和数字。

其实方法都是类似的,只是我们需要调整一下正则表达式而已。

提取数字

我们还是创建一个自定义函数,具体代码如下:

CREATE FUNCTION DBO.GET_NUMBER(@Str VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@Str) > 0
BEGIN
  SET @Str=stuff(@Str,PATINDEX('%[^0-9]%',@Str),1,'')
END
RETURN @Str
END
GO

测试自定义函数

SELECT dbo.GET_NUMBER('SQL数1据2库3开4发5')

结果:

提取中文字符

从提取字母和数字中,不知大家是否看出规律来了,就是在使用PATINDX函数时,后面第一个参数会相应的改变。字母的是[a-z],数字的是[0-9],那中文的是什么呢?看下面的代码

CREATE FUNCTION DBO.GET_CHINESE(@Str NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^吖-座]%',@Str) > 0
SET @Str = STUFF(@Str,PATINDEX('%[^吖-座]%',@Str),1,N'')
RETURN @Str
END
GO

测试自定义函数

SELECT dbo.GET_CHINESE('SQL数1据2库3开4发5')

结果:

以上就是今天要讲的内容了,觉得不错,欢迎分享给周围的朋友,谢谢~


最后给大家分享我写的SQL两件套:《SQL基础知识第二版》和《SQL高级知识第二版》的PDF电子版。里面有各个语法的解释、大量的实例讲解和批注等等,非常通俗易懂,方便大家跟着一起来实操。
有需要的读者可以下载学习,在下面的公众号「数据前线」(非本号)后台回复关键字:SQL,就行
——End——

后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。


推荐阅读
推荐几款好用的文本编辑器

字节跳动涉代码抄袭被诉陪22.74亿,连错误的函数都搬?
潘叔卖酒一个月能挣几个W?
如何写出高质量的 SQL 代码?
不懂就问:为什么 delete 表数据,磁盘空间还是被占用?

更多推荐

如何用 SQL 提取字符串中的中文和数字?