2013-08-08 1 views
1

В моем офисе одна из таблиц, которые мы используем, отслеживает наши номера заказов. Проблема в том, что сотрудники не вводят число последовательно в поле базы данных.
Некоторые из примеров приведены:SQL Выбор и возврат данных на основе шаблона

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

Мне нужно найти способ, чтобы вернуть только «Nnnnnn-NNNNN» подстроку независимо от того, где в поле оно. В большинстве случаев этот шаблон находится в конце поля, но это не всегда так. Я уже ограничил записи данных только теми, у кого этот шаблон, используя выражение LIKE в моем предложении WHERE, но я не знаю, как лучше всего вернуть именно этот шаблон в виде столбца.


Edit:

Мы до сих пор с помощью 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

Похоже, вам нужен оператор CASE, но, как писал Алекс, вам нужно привести примеры, чтобы получить ответ – twoleggedhorse

+0

Я согласен с Alex и TwoLegs. Если это в конечном итоге будет частью инструкции UPDATE, предназначенной для исправления ошибочного ввода данных, вы также можете предоставить некоторую информацию в этом отношении. – mikeY

ответ

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

Было бы лучше, если вы сначала настроите свои данные, вы можете попробовать попробовать (для MYSQL)

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

SQLFIDDLE