怎样判断字符串只有 英文字符和数字?

验证码识别 2010-06-09 02:23:44
判断字符串只有 英文字符和数字

SQL要怎么写,越具体越好
...全文
166 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
feilniu 2010-06-09
  • 打赏
  • 举报
回复
不考虑排序规则的字符串比较,结果正确都是蒙得巧。
feilniu 2010-06-09
  • 打赏
  • 举报
回复

IF @string NOT LIKE '%[^0-9A-Za-z]%' COLLATE Chinese_PRC_BIN
SELECT '只有英文字符和数字'
rmljoe 2010-06-09
  • 打赏
  • 举报
回复
学习了。。。
luoyoumou 2010-06-09
  • 打赏
  • 举报
回复
-- http://www.cnblogs.com/SAL2928/archive/2009/12/28/1633761.html

-- sql获取字母:

CREATE FUNCTION dbo.F_Get_STR (@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^a-z]%',@S)>0
BEGIN
set @s=stuff(@s,patindex('%[^a-z0-9]%',@s),1,'')
END
RETURN @S
END
GO

-- sql获取数字:

create function dbo.F_Get_Number (@S varchar(100))
returns int
AS
begin
while PATINDEX('%[^0-9]%',@S)>0
begin
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
end
return cast(@S as int)
end
Go

-- sql获取非数字:

create function dbo.F_Get_NANnumber (@S varchar(100))
returns varchar(500)
AS
begin
while PATINDEX('%[0-9]%',@S)>0
begin
set @s=stuff(@s,patindex('%[0-9]%',@s),1,'')
end
return @s
end
GO
luoyoumou 2010-06-09
  • 打赏
  • 举报
回复
ALTER FUNCTION dbo.F_Get_STR (@S VARCHAR(100))
RETURNS VARCHAR(100)
AS

BEGIN
DECLARE @v_len_str1 VARCHAR(100);
DECLARE @v_len_str2 VARCHAR(100);
DECLARE @return VARCHAR(100);

SET @v_len_str1 = len(@S);
WHILE PATINDEX('%[^a-z]%',@S)>0
BEGIN
set @s=stuff(@s,patindex('%[^a-z0-9]%',@s),1,'')
END

SET @v_len_str2 = len(@S);
IF(@v_len_str1=@v_len_str2)
SET @return = '只含字母、数字';
ELSE
SET @return ='除含字母、数字外,还有其他字符';
RETURN @return;
END
GO

select dbo.F_Get_STR('luoyoumou%');
GOODlivelife 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 goodlivelife 的回复:]
SQL code
patindex('%[^0-9a-zA-Z]%',字段)>0
[/Quote]

where not patindex('%[^0-9a-zA-Z]%',字段)>0
GOODlivelife 2010-06-09
  • 打赏
  • 举报
回复
patindex('%[^0-9a-zA-Z]%',字段)>0
永生天地 2010-06-09
  • 打赏
  • 举报
回复
--提取数字
IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
GO
--123
--------------------------------------------------------------------
--提取英文
IF OBJECT_ID('DBO.GET_STR') IS NOT NULL
DROP FUNCTION DBO.GET_STR
GO
CREATE FUNCTION DBO.GET_STR(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^a-z]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_STR('呵呵ABC123ABC')
GO
--------------------------------------------------------------------
--提取中文
IF OBJECT_ID('DBO.CHINA_STR') IS NOT NULL
DROP FUNCTION DBO.CHINA_STR
GO
CREATE FUNCTION DBO.CHINA_STR(@S NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^吖-座]%',@S) > 0
SET @S = STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')
RETURN @S
END
GO
PRINT DBO.CHINA_STR('呵呵ABC123ABC')
GO

SELECT * FROM (select 'ASDKG論壇K联通DL' as col)TB WHERE COL LIKE N'%[吖-咗]%'
htl258_Tony 2010-06-09
  • 打赏
  • 举报
回复
select * from tb where patindex('%[^0-9a-zA-Z]%',col)=0
chuifengde 2010-06-09
  • 打赏
  • 举报
回复
select * from [Table] 
where patindex('%[^0-9a-z]%',Col)=0
永生天地 2010-06-09
  • 打赏
  • 举报
回复
--提取数字
IF OBJECT_ID('DBO.GET_NUMBER2') IS NOT NULL
DROP FUNCTION DBO.GET_NUMBER2
GO
CREATE FUNCTION DBO.GET_NUMBER2(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^0-9]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_NUMBER('呵呵ABC123ABC')
GO
--123
--------------------------------------------------------------------
--提取英文
IF OBJECT_ID('DBO.GET_STR') IS NOT NULL
DROP FUNCTION DBO.GET_STR
GO
CREATE FUNCTION DBO.GET_STR(@S VARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^a-z]%',@S) > 0
BEGIN
set @s=stuff(@s,patindex('%[^a-z]%',@s),1,'')
END
RETURN @S
END
GO
--测试
PRINT DBO.GET_STR('呵呵ABC123ABC')
GO
--------------------------------------------------------------------
--提取中文
IF OBJECT_ID('DBO.CHINA_STR') IS NOT NULL
DROP FUNCTION DBO.CHINA_STR
GO
CREATE FUNCTION DBO.CHINA_STR(@S NVARCHAR(100))
RETURNS VARCHAR(100)
AS
BEGIN
WHILE PATINDEX('%[^吖-座]%',@S) > 0
SET @S = STUFF(@S,PATINDEX('%[^吖-座]%',@S),1,N'')
RETURN @S
END
GO
PRINT DBO.CHINA_STR('呵呵ABC123ABC')
GO



SELECT * FROM (select 'ASDKG論壇K联通DL' as col)TB WHERE COL LIKE N'%[吖-咗]%'

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧