SQL语句查询字段不包涵某个字符
sql中判断字符串中只包含或不包含某种字符的方法
通过2个函数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
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
select distinct from
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查询语句考试答案及解释 %代表任意多个字符 _代表一个字符
如果我就真的要查%或者_,怎么办呢?使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符作用
select username from gg_user where username like %xiao_% escape ;
select username from gg_user where username like %xiao%% escape ;
a as b,就是给a起个别名叫b
select a.* from table_1 as a就是给table_1起个别名叫a,因此前面就可以使用a.*了
比如 name as 姓名这样的话,查询出来的列就是写姓名
一、单表查询练习
1、查询<学生信息表>,查询学生张三的全部基本信息
select *
from a_studentinfo
where sname=张三
2、查询<学生信息表>,查询学生张三和”李四”的基本信息
select *
from a_studentinfo
where sname=张三
or sname=李四
3、查询<学生信息表>,查询姓张学生的基本信息
select *
from a_studentinfo
where sname like 张%
4、查询<学生信息表>,查询姓名中含有四字的学生的基本信息
select *
from a_studentinfo
where sname like %四%
5、查询<学生信息表>,查询姓名长度为三个字,姓“李”,且最后一个字是“强”的全部学生信息。
select *
from a_studentinfo
where sname like 李_强
6、查询<学生信息表>,查询姓张或者姓”李”的学生的基本信息。
select *
from a_studentinfo
where sname like 张%
or sname like 李%
7、查询<学生信息表>,查询姓张并且所属省份是北京的学生信息

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