首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

求一句sql。解决方法

2012-04-06 
求一句sql。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。如下表T,一个字段path|0|1|2||0|1||0|1|4||23|32|32||32||3

求一句sql。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
如下表T,一个字段
path
|0|1|2|
|0|1|
|0|1|4|
|23|32|32|
|32|
|32|32|54|
|54|54|
|h|g|hg|
|h|hg|6|65|
|65|65|
请问如何选出有3个管道号的所有记录,比如|0|1|,|54|54|


[解决办法]
可以这样来实现:
1、建立一个自定义函数,使用Split函数按“|”来拆分字段,计算拆分后字符串数组的大小来获得“|”的个数:
Function myret(str As String) As Integer
Dim aa() As String
aa = Split(str, "| ")
Dim I As Variant
Dim j As Integer
j = -1
For Each I In aa
j = j + 1
Next I
myret = j
End Function

2、设计一个查询调用自定义函数,并设置你需要的“|”的值,具体的SQL查询语句为:
SELECT t.字段1
FROM t
WHERE (((myret([字段1]))=3));

[解决办法]
--如果是Access2003或后续版本,可以用如下方法:

SELECT *
FROM T
where len([path])-len(replace([Path], "| ", " "))=3

热点排行