日期:2014-05-16  浏览次数:20767 次

求一句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