SQL在不同条件之间搜索字符串的数字

时间:2013-06-07 21:53:38

标签: sql string excel vba

我一直试图解决这个问题,但尚未找到解决方案。

我正在寻找一种方法,使用SQL命令在字符串中搜索2个点之间的字母数字。

例如表格中的数据集显示:

--- ---添加
我正在搜索的编号顺序如下

A=[a-z,A-Z]
#=[0-9]
X=[a-z,A-Z,0-9] or can be missing

AA###XX-XX-A##-####-###-X

------

[MyList] 列示例
更新示例

AA123A-ZT-A01-2222
AB2121A-JR-A02-22222
AA2138A-AD-A03-222
....
AA3174A-KV-C01-22222
AA762A-AS-C02-2222
AA317AA-WG-C03-22222
AA576A-BB-C04-2222
AA345A-SG-C05-22222
AA862A-ER-C06-2222
AA9871A-HD-A07-22222
....

我需要帮助的是:

SELECT * FROM test WHERE MyList BETWEEN '-C02' AND '-C05'

我最初试图结合LIKE和BETWEEN。我尝试过几种不同的方法但仍然没有运气。

我使用的SQL是Microsoft JET OLEDB 4.0。最终,这将在excel 2007中使用(但需要与2003向后兼容),以搜索特定数据的巨大(在Excel方面)数据表。

非常感谢任何帮助或指示。

2 个答案:

答案 0 :(得分:0)

你能这样做吗?

SELECT *
FROM test
WHERE MyList LIKE '%-C%'
      AND LEFT(SUBSTRING(MyList, PATINDEX('%[0-9.]%', MyList), 50), PATINDEX('%[^0-9.]%', SUBSTRING(MyList, PATINDEX('%[0-9.]%', MyList), 50) + 'X')-1) BETWEEN '01' AND '05'

where子句的第二个条件返回字符串中的第一个数字。

http://blogs.lessthandot.com/index.php/DataMgmt/DataDesign/extracting-numbers-with-sql-server

答案 1 :(得分:0)

感谢评论的所有人和用户1845791,我能够找到原始问题的解决方案。

因此,使用Excel和JET 4.0在基于条件的列数据集中搜索范围。

<强> SOLUTION:

SELECT *
FROM test
WHERE Document MyList LIKE '%-C0[2-5]%'

Microsoft Dev Center

的有用资源