2

我一直在尝试这个问题一段时间,但还没有找到解决方案。

我正在寻找一种使用 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 而言)数据表中搜索特定数据。

任何帮助或指导将不胜感激。

4

2 回答 2

0

Thanks to everyone that commented and user1845791 I was able to find the solution to my original question.

So using Excel with JET 4.0 to search for a range within a Column Data set based on criteria.

SOLUTION:

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

Helpful Resorce at Microsoft Dev Center

于 2013-06-10T22:46:24.680 回答
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

于 2013-06-07T23:21:54.297 回答