Дано: id тестовой записи состоит только из девяток и их не менее пяти. Задача: Взять из таблицы все записи кроме тестовых. Пример: В таблице: Код (Text): id mydata 1 Нечто 2 Что-то 9 Тоже что-то есть 23 Хлам 99 Некто 257 А чо 99999 Тест 100000 Нужные данные 999999 Тоже тест Запрос должен вернуть: Код (Text): id mydata 1 Нечто 2 Что-то 9 Тоже что-то есть 23 Хлам 99 Некто 257 А чо 100000 Нужные данные Ограничение: Используется MS SQL Server. Хотя можно решить для чего другого и попробовать перевести. Вопрос: Как выглядит запрос возвращающий нужные данные? Решения: MySQL скорее всего может это сделать через REGEX: [sql]where id NOT REGEXP 99999+[/sql] Но, MSSQL умеет регулярки только через левое ухо. [sql]where len(replace(cast(id as nvarchar(20)), '9', ''))=0 and len(cast(id as nvarchar(20)))>=5 [/sql] Как-то очень монструозно...
может быть по-уродски, но как вариант [sql]select * from mytable where 1=1 and cast (id as varchar) not like '%0%' and cast (id as varchar) not like '%1%' ... and cast (id as varchar) not like '%8%' and id >=99999[/sql] этот селект вернет все тестовые записи. следовательно, нужно применить как-то отрицание (напр, not in), и вуаля.