Regex для фильтрации чисел с точками и без - PullRequest
0 голосов
/ 18 мая 2018

У меня есть таблица SQL, которая содержит список категорий.Каждый элемент начинается с номера (номер основной категории) или с номера «точка» другого номера (номер основной категории и номер ее подкатегории).

Например,

10 Main Category A------
10.10 Sub Category A1
10.20 Sub Category A2
20 Main Category B
20.10 Sub Category B1
...

Первый Iмне нужны только все записи, которые имеют номера основной категории, в другом запросе мне нужно отфильтровать только подпункты, которые начинаются, например, с 10, и вернуть все записи 10.10 и 10.20

В программе, которую я делаю, сначала нужно выбратьОсновная категория и на основе выбранной основной категории выбирают подкатегории.В базе данных нет связи между записями (parent-child) и только идентификатором сортировки, например

[0-9][0-9] Я знаю, но тогда как проверить возможную (но не присутствующую третью цифру), а затем НЕТ следующуюточка.

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Только основные категории: [0-9]+ +Category.*

Только подкатегории: [0-9]+/.[0-9]+ +Sub +Category.*

Если вы работаете в SQL, использование LIKE, такое как @DanielMarcus, вероятно, будетпуть.

Кроме того, примечание [0-9][0-9] является излишним.Попробуйте [0-9]{2} (если ожидается число от 0 до 99) или [0-9]+ (если ожидается любое положительное целое число)

0 голосов
/ 18 мая 2018

Чтобы получить все категории, которые являются основными категориями, используйте:

select t.*
from t
where category not like '%.%';

Чтобы получить прямые подкатегории категории, используйте:

select t.*
from t
where category like '10.%' and category not like '%.%.%'
0 голосов
/ 18 мая 2018

Это должно дать вам все основные номера категорий:

select * 
from yourtable 
where 
    isnumeric(left(yourcolumn, charindex(' ', yourcolumn)-1))=1 and 
    left(yourcolumn, charindex(' ', yourcolumn)-1) not like '%.%'

Затем присоедините их к подпрограммам по первым двум цифрам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...