c # поиск столбца таблицы оракула для регулярного выражения - PullRequest
1 голос
/ 20 января 2010

Я пытаюсь создать страницу asp.net с помощью c #, который будет запрашивать столбец в базе данных Oracle, содержащей 20 000 строк.

Я хочу отобразить все строки, которые соответствуют этому шаблону регулярного выражения "[\ r \ n] $". (Должно иметь только около 5 строк, соответствующих этому шаблону)

Версия Oracle, которую мы используем, не поддерживает регулярные выражения, поэтому мне нужно найти способ сделать это в c #, но я не уверен, как это сделать.

Ответы [ 2 ]

1 голос
/ 20 января 2010

Сначала начните с выяснения того, что делает регулярное выражение.

Давайте разберем это:

[\r\n]$

Скобки [] дают вам класс символов и говорят "соответствует одному из этих символов". Таким образом, [\r\n] говорит о совпадении \r (возврат каретки) или \n (разрыв строки). $ является якорем и говорит "совпадение в конце строки". Таким образом, регулярное выражение говорит «соответствует возврат каретки или разрыв строки в конце строки».

Теперь, вы можете перевести это на SQL? Для этого вам нужно что-то вроде

SELECT * FROM TABLE
WHERE
    SOMECOLUMN LIKE '%'||CHR(13)||CHR(10) OR
    SOMECOLUMN LIKE '%'||CHR(13)

(Извините, мой Оракул слаб, но это близкое первое приближение.)

Если нет, можете ли вы извлечь данные из таблицы (SELECT * FROM TABLE) и запустить это регулярное выражение локально в .NET? Двадцать тысяч строк - это не так много, чтобы просто вставить все это в память и запустить его локально.

0 голосов
/ 20 января 2010

Если вы ХОТИТЕ сделать это с помощью регулярных выражений в .net, вам, по сути, придется загрузить все данные в память и выполнить там поиск регулярных выражений.Это может потенциально привести к очень низкой производительности.Я думаю, что вы должны рассмотреть возможность нормального сравнения строк в базе данных, если это вообще возможно.

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