基于模式的SQL选择和返回数据

时间:2013-08-08 16:14:46

标签: sql select pattern-matching sql-server-2000

在我的办公室,我们使用的其中一个表跟踪我们的订单号。问题是员工不会将数字一直输入数据库字段 列出了一些例子:

  '7-26-13 543006-27031', '345009-27031', 'KWYD-863009-27031'.

我需要找到一种方法来返回'nnnnnn-nnnnn'子串 无论在哪个领域都是如此。大多数情况下,这种模式是在该领域的最后,但情况并非总是如此。我已经在我的WHERE子句中使用LIKE表达式将数据记录限制为那些具有该模式的记录,但我不知道如何最好地将该模式作为列返回。


编辑:

我们仍在使用SQL Server 2000

我想要做的是:

SELECT SUBSTRING(VendorOrderNo, ??, 12) AS OrderNo
FROM Orders
WHERE VendorOrderNo LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]%'

2 个答案:

答案 0 :(得分:0)

 select 'nnnnnn-nnnnn' as employeeid 
  from table 
 where employees like'%nnnnnn-nnnnn'

答案 1 :(得分:0)

如果你先调整数据会更好,你可以尝试一下(它用于MYSQL)

SELECT * FROM your_table_name WHERE order_number REGEXP '[0-9]+-[0-9]+';

<强> SQLFIDDLE