Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Шаблон в Like  [new]
vso
Member

Откуда: СПб
Сообщений: 270
Всем добрый день!

скажите можно ли такой шаблон записать покомпактнее
[field] like '[0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9]' or
[field] like '[0-9][0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9]' or
[field] like '[0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9][A-Z]' or
[field] like '[0-9][0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9][A-Z]'


?????
12 дек 12, 21:13    [13622237]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
[field] like '[0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9]' or
[field] like '[0-9][0-9A-Z][A-Z][A-Z][0-9A-Z][0-9][0-9A-Z][A-Z][0-9A-Z][0-9][0-9][0-9A-Z]' or
[field] like '[0-9][0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9][A-Z]'
12 дек 12, 21:26    [13622278]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Веткин Сергей,

DECLARE @P TABLE (mask VARCHAR(1000))
INSERT INTO @P(mask) VALUES ('0AAA00AA000'), ('00AAA00AA000'), ('0AAA00AA000A'), ('00AAA00AA000A')
UPDATE @P SET mask = REPLACE(REPLACE(mask, '0', '[0-9]'), 'A', '[A-Z]')

DECLARE @T TABLE (field VARCHAR(1000))
INSERT INTO @T(field) VALUES ('2FFF34CC567'), ('99FDJ77DD323'), ('A9FDJ77DD323'), ('9BFDJ77DD323')

SELECT T.* 
FROM @T T
  INNER JOIN @P P ON T.field LIKE mask
12 дек 12, 23:00    [13622609]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
vso
Member

Откуда: СПб
Сообщений: 270
iap, спасибо

может еще подскажешь это выражение
[0-9A-Z]
значит

1. Или цифра или буква
2. И цифра и буква????
13 дек 12, 11:52    [13624431]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
Веткин Сергей
iap, спасибо

может еще подскажешь это выражение
[0-9A-Z]
значит

1. Или цифра или буква
2. И цифра и буква????
или, конечно.
Ещё могу сказать, что использовать диапазоны надо с осторожностью.
В данном-то случае, поскольку все буквы американские, всегда прокатит.
А вообще, сильно зависит от COLLATE строк. Так что я бы не гнался за краткостью,
а просто явно перечислил бы в строке все допустимые символы.

Вообще непонятно, нужны шашечки или ехать? Я бы не стремился к компактности в данном случае.
13 дек 12, 12:35    [13624824]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
Кстати, сейчас внезапно сообразил, что объединил вторую и третью строки в Вашем примере, - и это НЕПРАВИЛЬНО!
Извините. Посыпаю голову пеплом.
13 дек 12, 12:38    [13624849]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
vso
Member

Откуда: СПб
Сообщений: 270
iap, просто иногда когда много или очень трудно прочитать что ты уже учел, а что нет
13 дек 12, 15:58    [13626750]     Ответить | Цитировать Сообщить модератору
 Re: Шаблон в Like  [new]
Посетитель
Member

Откуда:
Сообщений: 1210
Веткин Сергей,

чисто поржать
([field] like '[0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9]%' and isnull(nullif(stuff([field],1,11,''),''),'A') like [A-Z]) or
([field] like '[0-9][0-9][A-Z][A-Z][A-Z][0-9][0-9][A-Z][A-Z][0-9][0-9][0-9]%' and  isnull(nullif(stuff([field],1,12,''),''),'A') like [A-Z])
13 дек 12, 18:11    [13627961]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить