
我的access 数据库
我的access数据库里有料号的字段,包含了象这样的料号:0-1234-1or01234.现在我要找出以0开始的纯数字没有"-"或空格的料号,请各位大侠倾力指点!!!!!...
我的access 数据库里有料号的字段,包含了象这样的料号: 0-1234-1 or 01234. 现在我要找出以0开始的纯数字没有"-"或空格的料号,请各位大侠倾力指点!!!!!!!!!
展开
展开全部
我测试过,以下可行。
select 料号 from 表1 where left(料号,1)='0' and len(料号)=len(str(val(料号)))
说明:既然包含空格和/或-,那么“料号”字段肯定是字符串。
left(料号,1)='0' 找出以0开始的数字字符串;关键是后面一个条件怎么理解?len(料号) 测定料号字符串的长度,val(字符串) 函数返回作为适当类型的数值的字符串中包含的数字,Val 函数会在其不能识别为数字的一部分的第一个字符处停止读取字符串,空白、制表符和换行字符均会从该参数中去掉,比如:Val("2457") 返回2457;Val(" 2 45 7") 返回2457;Val("24 and 57") 返回 24;val(0.0123) 返回 0.0123,val(00123) 返回123(注意对于数字00123前面的0无意义,所以返回123)。
由于len(字符串) 函数要求参数是字符串而不是数字,所以再用str(数字)函数返回字符串,但要注意str()函数返回时会在前面留有一个先导空格,用以暗示前面有正号(既+)。
所以,料号字段如果以0开始且没有空格或“-”,则 len(料号)=len(str(val(料号)))。
如果料号字段的值只以一个0开始,以上可行,但,如果还有2个0开始则应改为如下:
select 料号 from 表1 (where left(料号,1)='0' and len(料号)=len(str(val(料号)))) or (where left(料号,2)='00' and len(料号)=len(str(val(料号)))+1)
如果还有3个0开始的,则再加上一个 OR (where left(料号,3)='000' and len(料号)=len(str(val(料号)))+2)
select 料号 from 表1 where left(料号,1)='0' and len(料号)=len(str(val(料号)))
说明:既然包含空格和/或-,那么“料号”字段肯定是字符串。
left(料号,1)='0' 找出以0开始的数字字符串;关键是后面一个条件怎么理解?len(料号) 测定料号字符串的长度,val(字符串) 函数返回作为适当类型的数值的字符串中包含的数字,Val 函数会在其不能识别为数字的一部分的第一个字符处停止读取字符串,空白、制表符和换行字符均会从该参数中去掉,比如:Val("2457") 返回2457;Val(" 2 45 7") 返回2457;Val("24 and 57") 返回 24;val(0.0123) 返回 0.0123,val(00123) 返回123(注意对于数字00123前面的0无意义,所以返回123)。
由于len(字符串) 函数要求参数是字符串而不是数字,所以再用str(数字)函数返回字符串,但要注意str()函数返回时会在前面留有一个先导空格,用以暗示前面有正号(既+)。
所以,料号字段如果以0开始且没有空格或“-”,则 len(料号)=len(str(val(料号)))。
如果料号字段的值只以一个0开始,以上可行,但,如果还有2个0开始则应改为如下:
select 料号 from 表1 (where left(料号,1)='0' and len(料号)=len(str(val(料号)))) or (where left(料号,2)='00' and len(料号)=len(str(val(料号)))+1)
如果还有3个0开始的,则再加上一个 OR (where left(料号,3)='000' and len(料号)=len(str(val(料号)))+2)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询