`
lxx_amy
  • 浏览: 16509 次
  • 性别: Icon_minigender_2
  • 来自: 黄冈
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

    博客分类:
  • sql
sql 
阅读更多
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

同类其他面试题 点击新一篇或旧一篇可浏览全部同类面试题
分享到:
评论

相关推荐

    SQL Server 提取数字、提取英文、提取中文的sql语句

    在SQL Server中,有时我们需要从字符串中单独提取特定类型的字符,比如数字、英文或中文。以下是一些关于如何在SQL Server中实现这些功能的函数示例。 首先,我们来看一下如何提取中文字符。这里定义了一个名为`fun...

    过滤特殊字符及表情符

    - **字符串函数**:Java中的`String.replaceAll()`方法,可以结合正则表达式实现过滤。 - **自定义过滤器**:对于更复杂的需求,可以编写自定义过滤器,如提供的`TextWatcherImpl.java`和`MaxLengthInputFilter....

    oracle过滤数字

    本文将围绕“Oracle过滤数字”这一主题展开,详细介绍如何在Oracle环境中实现对字符串中数字的过滤,并通过具体实例来帮助读者更好地理解和掌握相关技巧。 #### 一、Oracle过滤数字的基本原理 在Oracle中,可以...

    几个有用的php字符串过滤,转换函数代码

    在PHP编程中,字符串处理是常见的任务之一,包括过滤、转换和操作字符串。这里我们将深入探讨标题和描述中提到的一些重要函数,以及一些其他相关的PHP字符串处理函数。 1. **nl2br()**: 这个函数用于将字符串中的换...

    SqlServer 获取字符串中小写字母的sql语句

    在SQL Server中,有时我们需要对字符串进行特定的处理,例如提取出其中的特定字符类型,如小写字母或大写字母。本篇文章将详细介绍如何使用SQL语句来实现这一功能。 首先,我们要了解SQL Server中用于处理字符串的...

    SQL Substring提取部分字符串

    SQL 中的 `substring` 函数是一个非常实用的功能,它允许你在处理字符串数据时提取特定部分。这个函数在不同的数据库管理系统(DBMS)中可能有不同的名称,例如 MySQL 使用 `SUBSTR()` 或 `SUBSTRING()`,Oracle ...

    sql注入过滤字典.txt

    4. **转义特殊字符**:对于无法避免直接使用SQL字符串的情况,转义特殊字符是必要的。 5. **使用ORM框架**:现代的ORM框架通常内置了安全机制来防止SQL注入。 6. **定期审计**:定期进行代码审计,检查潜在的安全...

    易语言源码字符过滤.rar

    1. **字符串变量与字符串操作**:易语言提供了丰富的字符串操作函数,如“字符串长度”用于获取字符串的长度,“取子串”用于提取字符串的一部分,“比较字符串”用于比较两个字符串是否相等。在字符过滤中,我们...

    C#字符串和正则表达式参考手册

    5. **截取子字符串**:`Substring()`方法允许我们从字符串中提取一部分。 6. **替换和查找**:`Replace()`和`IndexOf()`/`LastIndexOf()`方法用于查找和替换子串。 ### 正则表达式 正则表达式(Regular Expression...

    解析SQL提取表名并输出文本文件

    这通常涉及到字符串处理、正则表达式匹配和SQL语法分析。例如,我们可以使用Python编程语言,结合正则表达式库(re)来实现这个功能: ```python import re def extract_table_names(sql_text): pattern = r'(?i)...

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要明白PHP内置的`strlen()`函数用于计算字符串的字节数,而非字符数。对于UTF-8编码的中文字符...

    Python代码源码-实操案例-框架案例-清洗字符串和列表.zip

    在Python编程语言中,字符串和列表是两种非常基础且重要的数据结构。字符串是不可变的字符序列,而列表则是可变的元素集合。本压缩包文件"Python代码源码-实操案例-框架案例-清洗字符串和列表.zip"提供了一些实际...

    深入SQL截取字符串(substring与patindex)的详解

    例如,如果你需要从用户输入中提取特定信息,或者在数据库查询中过滤或排序基于字符串的部分,`substring`和`patindex`都是必不可少的工具。 此外,需要注意的是,`substring`和`patindex`在不同的数据库管理系统...

    sql字符串函数大全和使用方法示例

    SQL字符串函数是数据库操作中非常常用的一类函数,主要用于处理和操作文本数据。在SQL Server中,有许多内置的字符串函数,这些函数可以帮助我们进行各种文本处理任务,例如格式化、查找、截取、转换等。以下是一些...

    数据库SQL函数大全

    3. LEFT() 和 RIGHT(): 分别从字符串左侧和右侧提取指定数量的字符。 4. CAST() 或 CONVERT(): 类型转换,如将字符串转换为数字。 以上只是SQL函数的一部分,实际上SQL提供了众多的内置函数来满足各种数据处理需求...

    sql常用函数

    - **REPLICATE()**:重复一个字符串指定次数,用于创建填充字符串。 - **REVERSE()**:反转字符串的字符顺序,可用于各种排序和分析操作。 - **REPLACE()**:在字符串中替换所有指定子串,常用于数据清洗和替换...

    sql函数大全.pdf

    - `INDEXOF()` 或 `CHARINDEX()`:这两个函数在SQL中用于查找子字符串在主字符串中的位置。`CHARINDEX()`是SQL Server的标准函数,它返回子串在字符串中的起始位置,如果未找到则返回0。 - `LEFT()`:这个函数返回...

    sql_函数大全_比较常用的一些函数整理[归纳].pdf

    SQL函数在数据库操作中起着至关重要的作用,它们允许我们对数据进行各种处理,包括转换、提取、比较和操作字符串。以下是对SQL中一些常用函数的详细解释: 1. **字符转换函数**: - `ASCII()`:返回一个字符的...

    过滤出java中的sql,js中的javascript

    为了找出Java代码中的SQL语句,开发者可能需要进行源代码审查,寻找特定的关键词或模式,如`PreparedStatement`、`Statement`、`ResultSet`等类的使用,以及SQL查询字符串。这些字符串可能直接出现在代码中,或者...

Global site tag (gtag.js) - Google Analytics