LIKE - отобрать поле, где есть только доустимые символы

tas
Дата: 17.02.2010 12:43:47
Есть поле CHAR(5), которое может содержать разные символы, к примеру "ABC123"

Последовательность и количество символов не важно, т.е. возможны значения:

ABC123
A123
123ABC
C3
...

Задача отобрать строки, где это поле заполнено неверно - к примеру имеет какой-то другой символ.

В данный момент дошел до:

LIKE '[^ABC123][^ABC123][^ABC123][^ABC123][^ABC123]'

благо размерность поля всего 5 знаков.

Вопрос - как сделать условие LIKE, которое бы выполняло эту задачу и не зависело бы от длины поля?
Glory
Дата: 17.02.2010 12:49:38
Если
tas

Есть поле CHAR(5), которое может содержать разные символы
Последовательность и количество символов не важно, т.е. возможны значения:

То что тогда

tas

где это поле заполнено неверно - к примеру имеет какой-то другой символ.
Taffy
Дата: 17.02.2010 12:53:35
--Функция замены символов
--в @t надо заполнить что на что меняем
CREATE   FUNCTION dbo.fff (@s varchar(8000)) 
RETURNS varchar(8000) AS  
BEGIN 

declare @t table(s char, d char)
insert into @t values ('A','')
insert into @t values ('B','')
insert into @t values ('C','')
insert into @t values ('D','')
insert into @t values ('E','')
insert into @t values ('F','')
insert into @t values ('S','')
insert into @t values ('H','')
insert into @t values ('W','')


select @s = replace(@s, t.s, t.d) 
from @t t 


select @s = replace(@s,' ','') 

return @s
END

--------------------------

--Пример использования
declare @rrr table (d varchar(8000))

insert into @rrr select 'ASF567EW'
insert into @rrr select 'B123567W'
insert into @rrr select 'FFF56457EASDW'
insert into @rrr select '567'

select *,dbo.fff(d),len(dbo.fff(d))
from @rrr
where len (d) <> len(dbo.fff(d))


Идея откуда-то с форума
iap
Дата: 17.02.2010 12:53:43
NOT LIKE '%[^ABC123]%'
tas
Дата: 17.02.2010 12:55:45
Мне нужно выбрать строку, где поле имеет значение, к примеру:

5ABC
A1234

здесь символы 4 и 5 - недопустимы.
iap
Дата: 17.02.2010 12:56:03
iap
NOT LIKE '%[^ABC123]%'
Извините:
LIKE '%[^ABC123]%'
Glory
Дата: 17.02.2010 12:58:40
tas
Мне нужно выбрать строку, где поле имеет значение, к примеру:

5ABC
A1234

здесь символы 4 и 5 - недопустимы.

По какой логике/алгоритму они недопустимы ?
tas
Дата: 17.02.2010 12:59:00
iap
NOT LIKE '%[^ABC123]%'


Кажется работает, только без ^

NOT LIKE '%[ABC123]%'

Спасибо всем - пошел тестировать!
tas
Дата: 17.02.2010 13:00:34
Glory

По какой логике/алгоритму они недопустимы ?


Логика - нахождение запрещенного символа на любой позиции!
Glory
Дата: 17.02.2010 13:03:44
tas
Glory

По какой логике/алгоритму они недопустимы ?


Логика - нахождение запрещенного символа на любой позиции!

И что такое есть этот "запрещенный символ" то ?