取字段内容中的最后一位或两位

liulianxin 2008-07-01 10:02:23
我这个access表中有个字段内容是日期加一个号,我只想取后边的这个号怎么取呀,长度是不固定的。
内容是这样的:2008-1-11-2
2008-11-10-20
我只想要2,20这最后的一个数。
急用!请教高手,谢谢!
...全文
434 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2008-07-02
  • 打赏
  • 举报
回复
IIf 函数


根据表达式的值,来返回两部分中的其中一个。

语法

IIf(expr, truepart, falsepart)

IIf 函数的语法含有下面这些命名参数:

部分 描述
expr 必要参数。用来判断真伪的表达式。
truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。



说明

由于 IIf 会计算 truepart 和 falsepart,虽然它只返回其中的一个。因此要注意到这个副作用。例如,如果 falsepart 产生一个被零除错误,那么程序就会发生错误,即使 expr 为 True。

InStr 函数


返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置。

语法

InStr([start, ]string1, string2[, compare])

InStr 函数的语法具有下面的参数:

部分 说明
start 可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。
string1 必要参数。接受搜索的字符串表达式。
string2 必要参数。被搜索的字符串表达式。
Compare 可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。指定一个有效的LCID (LocaleID) 以在比较中使用与区域有关的规则。



设置

compare 参数设置为:

常数 值 描述
vbUseCompareOption -1 使用Option Compare 语句设置执行一个比较。
vbBinaryCompare 0 执行一个二进制比较。
vbTextCompare 1 执行一个按照原文的比较。
vbDatabaseCompare 2 仅适用于Microsoft Access,执行一个基于数据库中信息的比较。



返回值

如果 InStr返回
string1 为零长度 0
string1 为 Null Null
string2 为零长度 Start
string2 为 Null Null
string2 找不到 0
在 string1 中找到string2 找到的位置
start > string2 0



说明

InStrB 函数作用于包含在字符串中的字节数据。所以 InStrB 返回的是字节位置,而不是字符位置。
liulianxin 2008-07-02
  • 打赏
  • 举报
回复
我测了可以,谢谢各位,能写一下IIf和instr函数语法吗?谢谢!
vbman2003 2008-07-02
  • 打赏
  • 举报
回复
上面毛病比较多,重来:


--access 2000以上版本,可以用replace

select mid(f,instr(f,'-')+1)
from (
select replace(字段名称,"-","",1,2) as f from tb
);


vbman2003 2008-07-02
  • 打赏
  • 举报
回复
--access以上版本,可以用replace
---->
--access 2000以上版本,可以用replace

-_-#
vbman2003 2008-07-02
  • 打赏
  • 举报
回复


--access以上版本,可以用replace

select select mid(f,instr(f,'-')+1)
from (
select replace(字段名称,"-","",1,2) as f from tb );

wwwwb 2008-07-01
  • 打赏
  • 举报
回复
SELECT iif(instr(right(gs1,2),'-')>0,1,
iif(instr(right(gs1,3),'-')>0,2,3))
AS gs,
right(gs1,gs);
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
2008-1-11-2
2008-11-10-201
200-12-11-101
就是这样的.有的最后面是三位的.
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
我刚测了下一下,IIf(Mid(b3.we,Len(B3.We)-1,1)='-',Mid(b3.we,Len(B3.We),1),Mid(b3.we,Len(B3.We)-1,2)) AS Expr1这个可以取出来,就是在access里面建个查询.谢谢各位,那我要是取后三位是不是就在后加在加个,Mid(b3.we,Len(B3.We)-2,3)就行了.
wwwwb 2008-07-01
  • 打赏
  • 举报
回复
后三位是什么意思?举个例子说明
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
能不能把iif和mid这个函数语法给写一下呀.我要是取后三位是不是这样写就行了IIf(Mid(b3.we,Len(B3.We)-1,1)='-',Mid(b3.we,Len(B3.We),1),Mid(b3.we,Len(B3.We)-1,2),Mid(b3.we,Len(B3.We)-2,3)) AS aaa
wwwwb 2008-07-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 liulianxin 的回复:]
不好意思,小妹我没学过access,请见谅!
[/Quote]
你是在什么环境下?
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
不好意思,小妹我没学过access,请见谅!
wwwwb 2008-07-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 liulianxin 的回复:]
不对呀,iif和instr这个函数是怎么个用法?
[/Quote]
我在ACCESS中测试通过,IIF是可以运行在ADO中的,你的运行环境?
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
不对呀,iif和instr这个函数是怎么个用法?
Edidu 2008-07-01
  • 打赏
  • 举报
回复
老大,我发誓以后肯定不会回复你的帖子了

4楼已经是你要的答案了。

如果要sql句实现的话,就用


SELECT IIf(Mid(b3.we,Len(B3.We)-1,1)='-',Mid(b3.we,Len(B3.We),1),Mid(b3.we,Len(B3.We)-1,2)) AS Expr1, B3.We
FROM B3;


表B3内容:
ID We
----------------------------
1 2008-09-08-6
2 2008-8-9-13
3 2008-07-2-5

语句测试结果:
Expr1 We
----------------------------
6 2008-09-08-6
13 2008-8-9-13
5 2008-07-2-5
wwwwb 2008-07-01
  • 打赏
  • 举报
回复
SELECT iif(instr(right('2008-11-10-20',2),'-')>0,1,2) as gs,
right('2008-11-10-20',gs)
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
不是是个文本型的.字段的内容现在就是2008-1-11-2
2008-11-10-20
2007-1-18-16
这种型式的.我用sql语句写了一个case when charindex('-',right(rtrim (sj),2))>0 then right(rtrim (sj),1) else right(rtrim (sj),2) end 在sql里可以用,但在assces里不行.我就是取最后两位或一位数.在给转换成int型就可以了.

这样能说明白吧.
wwwwb 2008-07-01
  • 打赏
  • 举报
回复
字段是日期型的?
liulianxin 2008-07-01
  • 打赏
  • 举报
回复
现在就是想要最后那个'-'后面的数,前面的不要,这个字段的内容是固定的.不能改的.这样说能说明白吗?
不是我不给分是我不会给.不好意思!刚开始用这个,研究会了马上给.

wwwwb 2008-07-01
  • 打赏
  • 举报
回复
呵呵,如果字段是日期型的,直接用DAY(日期字段)
加载更多回复(10)

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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