日期:2014-05-18 浏览次数:20825 次
select * from tb_name where ID not like '%[a-zA-Z0-9]%' //标点怎么判断呢??
select * from tb_name 
where patindex('%[^a-zA-Z0-9]%')=0
------解决方案--------------------
-- 建函数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