SQL中字符串中包含字符的判断方法

在sql中我判断包含字符串我们可使用很多方法如like,replace,charindex函数都可实现我们要的功能,下面我来给大家介绍判断字符串包含字符串sql语句。感兴趣的朋友一起看看吧

在sql中我判断包含字符串我们可使用很多方法,如like,replace,charindex函数都可实现我们要的功能,下面我来给各位介绍判断字符串包含字符串sql语句。

通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使用

函数:CHARINDEX和PATINDEX

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

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

例子:

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

?

1

2

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

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

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

?

1

2

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

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

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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.函数判断字符串只包含字母(忽略大小写)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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. 函数判断字符串不包含任何符号(包括空格)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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. 函数判断字符串不包含任何符号(除空格外)

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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 ]模式中最后有一个空格。

用charindex()——charindex(字符,字符串)>0 –>包含 查看一段话、一篇文章里面包含什么词

?

1

select ID,title,author from Article where CHARINDEX(title,@item)>0

7.用like——

?

1

select * from tablename where field1 like like ‘%key%'

8.使用replace()函数

?

1

2

3

4

declare @item nvarchar(100)

set @item='英语好难';

select ID,title,author from Article   

where LEN(REPLACE(@item,title,''))<len(@item);–根据替换后的长度进行判断>2、

总结

以上所述是小编给大家介绍的SQL中字符串中包含字符的判断方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对钦钦技术栈网站的支持!

原文链接:http://blog.csdn.net/yelin042/article/details/77940918

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/25087/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月23日 下午12:20
下一篇 2022年9月23日 下午12:20
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!