asp里sql语句这个正则式怎么写
我需要按尾数规律来判断手机号码例:138236105601382369110313823686082ifso_gl="AAAAA"thensqlstr=sqlstr&"a...
我需要按尾数规律来判断手机号码 例:13823610560 13823691103 13823686082 if so_gl="AAAAA" then sqlstr=sqlstr&" and right(s_hm,5) in("&tc1&") " 这样写加载量太大怎么定义这个正则式
有正则式的写法查询name字段中不含有数字的。select * from table1 where name like '%[!0-9]%'
麻烦哪位高手了 展开
有正则式的写法查询name字段中不含有数字的。select * from table1 where name like '%[!0-9]%'
麻烦哪位高手了 展开
3个回答
展开全部
如果你想在数据库里解决估计只能用到自定义函数了﹐系统目前的简单的正则表达达式根本没法解决这个问题﹐我把我的思路说给你听下﹐
你可以先在数据库建一个函数﹐然后用函数去匹配你尾数规则﹐然后用函数返回的值来筛选数据
我建的参考函数NUMBER_CHECK(@GZ AS varchar(20),@STR AS VARCHAR(20))
需要两个参数﹐第一个 是你需要的表达式参数﹐比如 AAA或AABCC或**AB**AB都行
第二个参数就是你的手机号码字段了﹐比如 RIGHT(s_hm,8)
返回值是1匹配﹐0不匹配
目前我只写了A和B﹐如故你觉得此方法可行再追加评论﹐我再发给你
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'NUMBER_CHECK' AND type = 'FN')
DROP FUNCTION NUMBER_CHECK
GO
CREATE FUNCTION dbo.NUMBER_CHECK(@GZ AS varchar(20),@STR AS VARCHAR(20))
RETURNS INT --含两个参数﹐返回值类型为INT
AS
BEGIN
DECLARE @RVAL INT
DECLARE @NEXT1 INT
DECLARE @NEXT2 INT
SET @NEXT1=0
SET @NEXT2=0
SET @RVAL=0
WHILE @NEXT1<=9
BEGIN
IF @STR LIKE '%'+REPLACE(REPLACE(REPLACE(@GZ,'B',@NEXT2),'A',@NEXT1),'*','_')+'%'
BEGIN
SET @RVAL=1
BREAK
END
ELSE
BEGIN
WHILE @NEXT2<=9
BEGIN
IF @STR LIKE '%'+REPLACE(REPLACE(REPLACE(@GZ,'B',@NEXT2),'A',@NEXT1),'*','_')+'%'
BEGIN
SET @RVAL=1
BREAK
END
ELSE
SET @NEXT2=@NEXT2+1
END
END
SET @NEXT1=@NEXT1+1
SET @NEXT2=0
END
RETURN @RVAL
END
最后测试数据﹕
DECLARE @TB TABLE(ST VARCHAR(60))
INSERT INTO @TB VALUES('13615292900')
INSERT INTO @TB VALUES('13615291000')
INSERT INTO @TB VALUES('13615296666')
INSERT INTO @TB VALUES('13615293333')
INSERT INTO @TB VALUES('13615293529')
INSERT INTO @TB VALUES('13612221110')
SELECT ST, dbo.NUMBER_CHECK('**AB**AB',RIGHT(ST,8)) as 匹配结果 FROM @TB
效果图
展开全部
感觉像是钻牛角尖了
应该把思路换一下,就很简单了。
你这里的尾数规律可以视为分类,当你在后台每录入一个手机号时,勾选这个手机号属于哪几个分类就行了。
解决办法,就是在数据库增加一个字段专门用来记录,分类的。
前台就是点击分类,显示分类下的所有数据。
这样一来,省去了很多烦索的程序执行,页面显示速度也会快很多。
应该把思路换一下,就很简单了。
你这里的尾数规律可以视为分类,当你在后台每录入一个手机号时,勾选这个手机号属于哪几个分类就行了。
解决办法,就是在数据库增加一个字段专门用来记录,分类的。
前台就是点击分类,显示分类下的所有数据。
这样一来,省去了很多烦索的程序执行,页面显示速度也会快很多。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先,你要懂正则表达式。这个这里不多说了,我也不是很懂,而且要编写正确,有点头痛~~~~
其次,对每个格式定义一个编号,如:
编号 格式 正则表达式
这样的关系,这样,选择格式(如AAAAA)的时候,连接对应的编号,查询表达式,也可以直接在格式中标记正则表达式的值。
第三,查询的时候,根据正则表达式再去查询目标数据匹配。SQL数据是支持正则表达式的。
第四,切忌,不要把所有数据查处来后,在ASP里来判断,那就~~~~晕菜了。
最后一个方案就是:在建立这些号码数据库的时候,就说明他们属于什么格式,如:
号码表:
ID 号码 其它信息
格式表:
ID 格式名 其它信息
关联表:
号码 格式名
其次,对每个格式定义一个编号,如:
编号 格式 正则表达式
这样的关系,这样,选择格式(如AAAAA)的时候,连接对应的编号,查询表达式,也可以直接在格式中标记正则表达式的值。
第三,查询的时候,根据正则表达式再去查询目标数据匹配。SQL数据是支持正则表达式的。
第四,切忌,不要把所有数据查处来后,在ASP里来判断,那就~~~~晕菜了。
最后一个方案就是:在建立这些号码数据库的时候,就说明他们属于什么格式,如:
号码表:
ID 号码 其它信息
格式表:
ID 格式名 其它信息
关联表:
号码 格式名
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询