SQL中判断字符串中包含字符的⽅法
在sql中我判断包含字符串我们可使⽤很多⽅法,如like,replace,charindex函数都可实现我们要的功能,下⾯我来给各位介绍判断字符串包含字符串sql语句。
通过2个函数CHARINDEX和PATINDEX以及通配符的灵活使⽤
函数:CHARINDEX和PATINDEX
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
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
CREATE FUNCTION [dbo].fn_IsAlphanumericBlank
(
@pString VARCHAR(8000)
)
RETURNS bit
WITH ENCRYPTION
AS
BEGIN
DECLARE @vJudge int
SET @vJudge = 0
SELECT @vJudge =
CASE
isalpha 函数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 –>包含查看⼀段话、⼀篇⽂章⾥⾯包含什么词select ID,title,author from Article  where CHARINDEX(title,@item)>0
7.⽤like——
select * from tablename where field1 like like ‘%key%’
8.使⽤replace()函数
declare @item nvarchar(100)
set @item='英语好难';
select ID,title,author from Article   
where  LEN(REPLACE(@item,title,''))<len(@item);--根据替换后的长度进⾏判断>2、

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。