sql - несколько значений для проверки функции - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь протестировать функцию (в этом случае - regexp_replace (tvalue, '([[: cntrl:]])', '')), и мне было интересно, есть ли способ пройти через несколько входов данные для функции в одном запросе SQL?

В основном я хочу видеть, что функция заменяет непечатаемые символы, моя идея была примерно такой:

мой псевдокод:

with testdata as (select 
'teststring1',
'$kfjs',
chr(10)||'test',
'    <>',
null,
'[{}&,''/\'
from dual)
select tvalue, regexp_replace(tvalue,'([[:cntrl:]])','')  from testdata
where tvalue <> regexp_replace(tvalue,'([[:cntrl:]])','');

Ответы [ 3 ]

3 голосов
/ 04 октября 2011
with testdata as (
  select 'teststring1' as tvalue from dual
  union all
  select '$kfjs' from dual
  union all
  select 'str1' || chr(10) || 'str2' from dual
  union all
  select '    <>' from dual
  union all
  select null from dual
  union all
  select '[{}&,''/' from dual
)
select rownum, tvalue, regexp_replace(tvalue, '([[:cntrl:]])', '') from testdata
where tvalue <> regexp_replace(tvalue, '([[:cntrl:]])', '');
2 голосов
/ 04 октября 2011

Если вы создаете пользовательский тип данных, вы можете использовать этот тип в качестве конструктора с функцией table для получения набора значений.

CREATE TYPE test_data AS TABLE OF VARCHAR2(40);

SELECT COLUMN_VALUE, REGEXP_REPLACE(COLUMN_VALUE, '([[:cntrl:]])', '')
FROM   table(test_data(
                'teststring1',
                '$kfjs',
                CHR(10) || 'test',
                '    <>',
                NULL,
                '[{}&,''/\'
             ))
WHERE  COLUMN_VALUE <> REGEXP_REPLACE(COLUMN_VALUE, '([[:cntrl:]])', '');
1 голос
/ 04 октября 2011

это просто.Создайте в базе данных таблицу с именем testdata, добавьте в нее ваши случаи и выполните запрос:

select rownum, tvalue, regexp_replace(tvalue, '([[:cntrl:]])', '') 
from testdata
where tvalue <> regexp_replace(tvalue, '([[:cntrl:]])', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...