SQL函数:字符串中提取数字,英文,中文,过滤重复字符

--提取数字
IF OBJECT_ID('DBO.GET_NUMBER') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER
GO
CREATE FUNCTION DBO.GET_NUMBER(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC-12,3ABC')
GO
--123
--------------------------------------------------------------------
--提取英文
IF OBJECT_ID('DBO.GET_STR') IS NOT NULL
DROP FUNCTION DBO.GET_STR
GO
CREATE FUNCTION DBO.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
--测试
PRINT DBO.GET_STR('呵呵ABC123ABC')
GO
--------------------------------------------------------------------
--提取中文
IF OBJECT_ID('DBO.CHINA_STR') IS NOT NULL
DROP FUNCTION DBO.CHINA_STR
GO
CREATE FUNCTION DBO.CHINA_STR(@S NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^吖-座]%',@S) > 0
SET @S = STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')
RETURN @S
END
GO
PRINT DBO.CHINA_STR('呵呵ABC123ABC')
GO
--------------------------------------------------------------------
--过滤重复字符
IF OBJECT_ID('DBO.DISTINCT_STR') IS NOT NULL
DROP FUNCTION DBO.DISTINCT_STR
GO
CREATE FUNCTION DBO.DISTINCT_STR(@S NVARCHAR(100),@SPLIT VARCHAR(50))
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)
IF LEFT(@S,1)<>@SPLIT
SET @S = @SPLIT+@S
IF RIGHT(@S,1)<>@SPLIT
SET @S = @S+@SPLIT
WHILE CHARINDEX(@SPLIT,@S)>0 AND LEN(@S)<>1
BEGIN
SET @INDEX = CHARINDEX(@SPLIT,@S)
SET @TEMP = LEFT(@S,CHARINDEX(@SPLIT,@S,@INDEX+LEN(@SPLIT)))
IF @NEW IS NULL 
SET @NEW = ISNULL(@NEW,'')+@TEMP
ELSE
SET @NEW = ISNULL(@NEW,'')+REPLACE(@TEMP,@SPLIT,'')+@SPLIT
WHILE CHARINDEX(@TEMP,@S)>0
BEGIN
SET @S=STUFF(@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT),CHARINDEX(@SPLIT,@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT))-CHARINDEX(@TEMP,@S),'')
END
END
RETURN RIGHT(LEFT(@NEW,LEN(@NEW)-1),LEN(LEFT(@NEW,LEN(@NEW)-1))-1)
END
GO
PRINT DBO.DISTINCT_STR('A,A,B,C,C,B,C,',',')
--A,B,C
GO
--------------------------------------------------------------------
--过滤重复字符2
IF OBJECT_ID('DBO.DISTINCT_STR2') IS NOT NULL
DROP FUNCTION DBO.DISTINCT_STR2
GO
CREATE FUNCTION DBO.DISTINCT_STR2(@S varchar(8000))
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)
WHILE LEN(@S)>0
BEGIN
SET @NEW=ISNULL(@NEW,'')+LEFT(@S,1)
SET @S=REPLACE(@S,LEFT(@S,1),'')
END
RETURN @NEW
END
GO
SELECT DBO.DISTINCT_STR2('AABCCD')
--ABCD
GO

--------------------------------------------------------------------
IF OBJECT_ID('DBO.SPLIT_STR') IS NOT NULL
DROP FUNCTION DBO.SPLIT_STR
GO
CREATE FUNCTION DBO.SPLIT_STR(
@S varchar(8000),      --包含多个数据项的字符串
@INDEX int,             --要获取的数据项的位置
@SPLIT varchar(10)     --数据分隔符
)
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @SPLITLEN int
SELECT @SPLITLEN=LEN(@SPLIT+'A')-2
WHILE @INDEX>1 AND CHARINDEX(@SPLIT,@S+@SPLIT)>0
SELECT @INDEX=@INDEX-1,@S=STUFF(@S,1,CHARINDEX(@SPLIT,@S+@SPLIT)+@SPLITLEN,'')
RETURN(ISNULL(LEFT(@S,CHARINDEX(@SPLIT,@S+@SPLIT)-1),''))
END
GO
PRINT DBO.SPLIT_STR('AA|BB|CC',2,'|')
--
GO

转载于:https://www.cnblogs.com/northstar/archive/2011/11/16/2251209.html

【转】SQL函数:字符串中提取数字,英文,中文,过滤重复字符相关推荐

  1. 从字母数字字符串中提取数字

    http://office.microsoft.com/zh-cn/excel-help/HA001154901.aspx 本文的作者是 Ashish Mathur,是一位 Microsoft MVP ...

  2. python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...

  3. python 从字符串中提取数字 re.findall()

    以前老用(.*?)提取数字,今天发现不对了,比如一行数字为: 0 0.248438 0.255556 0.128125 0.194444 用: re.findall('(.*?) (.*?) (.*? ...

  4. excel取末尾数字_Excel公式技巧11: 从字符串中提取数字——数字位于字符串末尾...

    excelperfect 上篇文章讲解了提取位于字符串开头的数字的公式技术,本文研究从字符串开头提取数字的技术: 1. 这些数字是连续的 2. 这些连续的数字位于字符串的末尾 3. 想要的结果是将这些 ...

  5. 使用 JavaScript 从字符串中提取数字

    在 JavaScript 中,有多种方法可以从字符串中提取数字.一种方法是使用 match() 方法和正则表达式来搜索字符串中的所有数字.另一种方法是使用 replace() 方法和正则表达式从字符串 ...

  6. java从字符串中提取数字

    1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只 ...

  7. 正则匹配——python用一个正则表达式从字符串中提取数字(包括整数、小数、正负数)

    import re# 从字符串中提取数字 totalCount = '-100,abc2.4-123s,d-1ds-0.234as123.2s1.3bb.24' count = re.findall( ...

  8. java 从字符串中提取数字

    /*** 从字符串中提取数字* @param string* @return*/public static double getNums(String string) {String str = &q ...

  9. java数字编程提,java从字符串中提取数字的简单实例

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们怎么把其中的数字提取出来呢?大致有以下几种方法, ...

最新文章

  1. pthread_cond_wait() 函数的使用
  2. JSON数据解析及gson.jar包
  3. 软考已报名可以更改科目吗
  4. 量子计算机算象棋,量子计算机,只需要几个量子,就足以解决国际象棋中n皇后问题!...
  5. 使用list和tuple
  6. python time localtimeq获取准确时间_python的内置模块time和datetime的方法详解以及使用(python内的time和datetime时间格式)...
  7. 怎样取消连续包月自动续费_苹果手机连续包月会员怎么取消 设置iPhone解除应用自动续费...
  8. 干货|我在 GitHub 上发现了一款骚气满满的字体!
  9. “先加密后签名”是不是安全?看完这篇就秒懂!
  10. C#中Datatable的Compute的用法(转载)
  11. 制备石墨烯流程图_科研人员制备出小扭转角度双层石墨烯
  12. unity改变物体轴心
  13. 知识付费的多重属性与本质特征
  14. 理解全概率公式与贝叶斯公式
  15. 右耳Python小作业--快递分拣
  16. 英语单词前缀规则总结
  17. 2018这类程序员工资最高!年薪50万只能算一般
  18. Instant Contiki
  19. 超透镜仿真案例(2)—— 宽带消色差 超构透镜模型 FDTD仿真超表面
  20. c#后端QQ通讯录(代码部分)

热门文章

  1. 2022-2028年中国碲化镉薄膜太阳能电池行业发展现状分析及投资前景趋势报告
  2. c++中的vector的常见使用
  3. pandas dataframe 删除带空值的行 各种空值 (dropna()、isna()、isnull()、fillna())
  4. 接触追踪解决方案建立在UWB而不是蓝牙上
  5. git 查看修改的代码行数,新增的文件以及删除的代码行数
  6. Android 9.0 系统弹框
  7. PyTorch 笔记(11)— Tensor内部存储结构(头信息区 Tensor,存储区 Storage)
  8. 机器学习最常用的优化算法 — 梯度下降法
  9. codefores 786B. Legacy(最短路,线段树优化拆点,好题)
  10. js自己定义插件-选项卡