日期:2014-05-18  浏览次数:20709 次

select 只包含文字的 内容。
ID 可以是汉字、数字、字母,也可以是 标点符号。。那么怎么查询ID 只包含汉字,而没有 数字、字母、标点符号的呢。,
SQL code
select * from tb_name 
where ID not like '%[a-zA-Z0-9]%'     //标点怎么判断呢??


------解决方案--------------------
PATINDEX('%[吖-做]%',@s)>0
------解决方案--------------------
SQL code
select * from tb_name 
where patindex('%[^a-zA-Z0-9]%')=0

------解决方案--------------------
SQL code

-- 建函数AOKMOKM
create function AOKMOKM
(@y varchar(50))
returns char(1)
as
begin
  declare @i int, @j int
  select @i=1, @j=len(@y)
  while(@i<=@j)
  begin
    if patindex('[吖-做]',substring(@y,@i,1))=0
      return 'N'
    select @i=@i+1  
  end
  return 'Y'
end

----- 测试 -----

-- 只包含汉字,而没有 数字、字母、标点符号
select dbo.AOKMOKM('迪卡') 'r'

r
----
Y


-- 只包含汉字数字,而没有字母、标点符号
select dbo.AOKMOKM('迪6卡') 'r'

r
----
N


-- 只包含汉字数字字母,而没有标点符号
select dbo.AOKMOKM('d迪6卡') 'r'

r
----
N


-- 只包含汉字标点符号,而没有数字字母
select dbo.AOKMOKM('迪,卡') 'r'

r
----
N


-- 只包含汉字,而没有数字字母标点符号
select dbo.AOKMOKM('唐诗三百首') 'r'

r
----
Y