SQL字符串中只包含或不包含某种字符的方法

SQL 中判断字符串中只包含或不包含某种字符的方法

通过2个函数CHARINDEX 和PA TINDEX 以及通配符的灵活使用可达目的。

CHARINDEX :查某字符(串) 是否包含在其他字符串中,返回字符串中指定表达式的起始位置。

PATINDEX :查某字符(串) 是否包含在其他字符串中,返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。特殊:可以使用通配符!

例子:

1. 查询字符串中是否包含非数字字符

SELECT PATINDEX('%[^0-9]%', '1235X461')

SELECT PATINDEX('%[^0-9]%', '12350461')

2. 查询字符串中是否包含数字字符

SELECT PATINDEX('%[0-9]%', 'SUYLLGoO')

SELECT PATINDEX('%[0-9]%', 'SUYLLG0O')

3. 函数判断字符串只包含数字

CREATE FUNCTION [dbo].fn_IsNumeric

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[0-9]%', LOWER(@pString)) > 0 THEN 0

WHEN PATINDEX('%[0-9]%', LOWER(@pString)) = 0 THEN 1

END

RETURN @vJudge

END

4. 函数判断字符串只包含字母(忽略大小写)

CREATE FUNCTION [dbo].fn_IsAlpha

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[a-z]%', LOWER(@pString)) > 0 THEN 0 WHEN PATINDEX('%[a-z]%', LOWER(@pString)) = 0 THEN 1 END

RETURN @vJudge

END

5. 函数判断字符串不包含任何符号(包括空格)

CREATE FUNCTION [dbo].fn_IsAlphanumeric

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[^a-z0-9]%', LOWER(@pString)) > 0 THEN 0 WHEN PATINDEX('%[^a-z0-9]%', LOWER(@pString)) = 0 THEN 1 END

RETURN @vJudge

END

6. 函数判断字符串不包含任何符号(除空格外)

CREATE FUNCTION [dbo].fn_IsAlphanumericBlank

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[^a-z0-9 ]%', LOWER(@pString)) > 0 THEN 0 WHEN PATINDEX('%[^a-z0-9 ]%', LOWER(@pString)) = 0 THEN 1 END

RETURN @vJudge

END

-- 注意:[^a-z0-9 ]模式中最后有一个空格。

SQL 中判断字符串中只包含或不包含某种字符的方法

通过2个函数CHARINDEX 和PA TINDEX 以及通配符的灵活使用可达目的。

CHARINDEX :查某字符(串) 是否包含在其他字符串中,返回字符串中指定表达式的起始位置。

PATINDEX :查某字符(串) 是否包含在其他字符串中,返回指定表达式中某模式第一次出现的起始位置;如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。特殊:可以使用通配符!

例子:

1. 查询字符串中是否包含非数字字符

SELECT PATINDEX('%[^0-9]%', '1235X461')

SELECT PATINDEX('%[^0-9]%', '12350461')

2. 查询字符串中是否包含数字字符

SELECT PATINDEX('%[0-9]%', 'SUYLLGoO')

SELECT PATINDEX('%[0-9]%', 'SUYLLG0O')

3. 函数判断字符串只包含数字

CREATE FUNCTION [dbo].fn_IsNumeric

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[0-9]%', LOWER(@pString)) > 0 THEN 0

WHEN PATINDEX('%[0-9]%', LOWER(@pString)) = 0 THEN 1

END

RETURN @vJudge

END

4. 函数判断字符串只包含字母(忽略大小写)

CREATE FUNCTION [dbo].fn_IsAlpha

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[a-z]%', LOWER(@pString)) > 0 THEN 0 WHEN PATINDEX('%[a-z]%', LOWER(@pString)) = 0 THEN 1 END

RETURN @vJudge

END

5. 函数判断字符串不包含任何符号(包括空格)

CREATE FUNCTION [dbo].fn_IsAlphanumeric

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[^a-z0-9]%', LOWER(@pString)) > 0 THEN 0 WHEN PATINDEX('%[^a-z0-9]%', LOWER(@pString)) = 0 THEN 1 END

RETURN @vJudge

END

6. 函数判断字符串不包含任何符号(除空格外)

CREATE FUNCTION [dbo].fn_IsAlphanumericBlank

(

@pString VARCHAR(8000)

)

RETURNS bit

WITH ENCRYPTION

AS

BEGIN

DECLARE @vJudge int

SET @vJudge = 0

SELECT @vJudge =

CASE

WHEN PATINDEX('%[^a-z0-9 ]%', LOWER(@pString)) > 0 THEN 0 WHEN PATINDEX('%[^a-z0-9 ]%', LOWER(@pString)) = 0 THEN 1 END

RETURN @vJudge

END

-- 注意:[^a-z0-9 ]模式中最后有一个空格。


相关内容

  • 如何使用SQLServer2000全文检索 -- c#天堂
  • 如何使用SQL Server 2000全文检索 SQL Server 2000全文检索 一.如何在SQL中启用全文检索功能 1.证全文检索服务是否安装 通过储存过程FULLTEXTSERVICEPROPERTY(返回有关全文服务级别属性的信息)来验证搜索服务(全文组件)是否安装.如Select fu ...

  • 电大数据结构考试资料总汇
  • 1. 下列功能中,不属于数据库管理系统功能的是( B ).B .数据库文件读写 2. 设有学生表(学号,姓名,所在系,专业,身份证号),其中 能够作为候选键的是( B ). B .学号.身份证号 3. 下列运算中,属于专门的关系运算的是( C ).C .集合的 连接运算 4. 下列扩展名中,属于SQ ...

  • 批处理格式
  • 批处理格式和执行顺序: [SQLVar] - - [OpenIcoFile] - [SetIco] - - [OpenFile] - [SQLExe] - [SetAutoValue] - 单元说明: 一.[SQLVar] :增加新的SQL参数开头: 1.格式: 参数名=数值 数据类型 : 数据类型 ...

  • 软件开发面试基础题
  • 一.数据库系统 1.1:数据库基本理论 1.数据库与数据库管理系统有什么区别? 答:数据库是以某种数据模型所确定的数据结构方式来组织和存储数据的.简单来说,数据库是存放数据的仓库,数据库管理系统是用来管理数据库的. 2.是什么数据模型? 答:数据模型是对现实世界数据特征进行抽象的工具,用来描述和处理 ...

  • 信息安全常见漏洞类型汇总
  • 一.SQL 注入漏洞 SQL 注入攻击(SQL Injection),简称注入攻击.SQL 注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的SQL 指令的检查,被数据库误认为是正常的SQL 指令而运行,从而使数据库受到攻击,可能导致数 ...

  • Access期末考试卷答案
  • 内蒙古大学 2008-2009学年2学期 计算机应用基础(二)Access 试卷(A卷) (闭卷 120 分钟) 学院 班级 姓名 学号 重修标记□ 一. 单项选择题(在每小题的四个备选答案中,选出一个 正确的答案,并将其号码填在题前的答案表格内.本大题共20小题,每小题1分,共20分) 答案表格: ...

  • ASP.NET网站程序防SQL注入式攻击方法-asp.net
  • 一.什么是SQL注入式攻击? 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击.常见的SQL注 ...

  • 人事档案管理系统毕业设计毕业论文
  • 武汉理工大学 毕业设计(论文) 人事档案管理系统 学院(系): 专业班级: 学生姓名: 指导教师: 人事档案管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于前者要求建立起数据一致性和完整性强.数据安全性好的库.而对于后者则要求应用程序功能完备,易 ...

  • Oracle笔试题目带答案
  • 1. ( )程序包用于读写操作系统文本文件.(选一项) A.Dbms_output B.Dbms_lob C.Dbms_random D.Utl_file 2. ( )触发器允许触发操作的语句访问行的列值.(选一项) A.行级 B.语句级 C.模式 D.数据库级 3. ( )是oracle在启动期间 ...