用报告标题中显示的 case-insensitive 模式匹配和匹配替换变量
Substitute variable with case-insensitive pattern matching and match shown in report title
我正在创建一个 SQL*Plus 脚本,其中要求用户提供替代变量的值。在我的查询块中,我有:
select ...
from ...
where table1.column1 = '&substitute_variable';
只要用户确切知道 table1.column1
的值是如何存储的,一切都会正常进行。如果它有值 Oracle 并且用户插入提示符 Oracle,脚本成功结束。
现在我希望用户输入的任何片段都匹配。例如。如果用户提供 Ora,则输出将是 Oracle... 等
如何结合
where table1.column1 = '&substitute_variable'
和
where table1.column1 like '%'
包括不区分大小写?
我的脚本是:
accept subtitute_value prompt 'insert smt: ';
some formating..
column ... format ... new_value something noprint
ttitle center "Report for: " subtitute_variable skip 5
break on something
select-statements
我可以使用 Aleksej 的评论获得 case-insensitive 匹配,
upper(table1.column1) like upper('%&substitute_variable%')
但它只显示报告标题中的 user-supplied 片段(来自 ttitle
),而不是它匹配的 table 的实际值。如何将实际的列值放入报告标题中?
SQL> set verify off
SQL> accept subtitute_value prompt 'insert smt: ';
insert smt: ora
SQL> ttitle center "Report for: " &subtitute_value skip 5
SQL> select column1
2 from table1
3 where upper(table1.column1) like upper('%& subtitute_value%');
Report for: ora
COLUMN1
----------------
xxOracleyy
123 ORAC LE 333
您可以使用列值 as shown in the documentation:
更改 ttitle
You can reference a column value in a top title by storing the desired value in a variable and referencing the variable in a TTITLE command
使用 Aleksej 的数据但扩展到多行,您可以:
set verify off
accept subtitute_value prompt 'insert smt: ';
ttitle center "Report for: " subttitle skip 5
column column1 new_value subttitle
break on column1 skip page
select column1, column2, column3
from table1
where upper(table1.column1) like upper('%&subtitute_value%')
order by column1; -- and others
其中得到:
insert smt: ora
Report for: 123 ORAC LE 333
COLUMN1 COLUMN2 COLUMN3
-------------------- ---------- --------------------
123 ORAC LE 333 95 Some text
99 Some text
Report for: xxOracleyy
COLUMN1 COLUMN2 COLUMN3
-------------------- ---------- --------------------
xxOracleyy 13 Some text
7 Some text
42 Some text
5 Some text
71 Some text
7 rows selected.
column ... new_value subttitle
定义了 ttitle
指令中引用的 subtitle
。不是说不叫代入变量,这里没有&
。如文档中所述,您需要中断用于标题的列。如果您 仅 想在标题中查看值,而不是在报告本身中,您可以将 noprint
添加到该 column
指令中。
我正在创建一个 SQL*Plus 脚本,其中要求用户提供替代变量的值。在我的查询块中,我有:
select ...
from ...
where table1.column1 = '&substitute_variable';
只要用户确切知道 table1.column1
的值是如何存储的,一切都会正常进行。如果它有值 Oracle 并且用户插入提示符 Oracle,脚本成功结束。
现在我希望用户输入的任何片段都匹配。例如。如果用户提供 Ora,则输出将是 Oracle... 等
如何结合
where table1.column1 = '&substitute_variable'
和
where table1.column1 like '%'
包括不区分大小写?
我的脚本是:
accept subtitute_value prompt 'insert smt: ';
some formating..
column ... format ... new_value something noprint
ttitle center "Report for: " subtitute_variable skip 5
break on something
select-statements
我可以使用 Aleksej 的评论获得 case-insensitive 匹配,
upper(table1.column1) like upper('%&substitute_variable%')
但它只显示报告标题中的 user-supplied 片段(来自 ttitle
),而不是它匹配的 table 的实际值。如何将实际的列值放入报告标题中?
SQL> set verify off
SQL> accept subtitute_value prompt 'insert smt: ';
insert smt: ora
SQL> ttitle center "Report for: " &subtitute_value skip 5
SQL> select column1
2 from table1
3 where upper(table1.column1) like upper('%& subtitute_value%');
Report for: ora
COLUMN1
----------------
xxOracleyy
123 ORAC LE 333
您可以使用列值 as shown in the documentation:
更改ttitle
You can reference a column value in a top title by storing the desired value in a variable and referencing the variable in a TTITLE command
使用 Aleksej 的数据但扩展到多行,您可以:
set verify off
accept subtitute_value prompt 'insert smt: ';
ttitle center "Report for: " subttitle skip 5
column column1 new_value subttitle
break on column1 skip page
select column1, column2, column3
from table1
where upper(table1.column1) like upper('%&subtitute_value%')
order by column1; -- and others
其中得到:
insert smt: ora
Report for: 123 ORAC LE 333
COLUMN1 COLUMN2 COLUMN3
-------------------- ---------- --------------------
123 ORAC LE 333 95 Some text
99 Some text
Report for: xxOracleyy
COLUMN1 COLUMN2 COLUMN3
-------------------- ---------- --------------------
xxOracleyy 13 Some text
7 Some text
42 Some text
5 Some text
71 Some text
7 rows selected.
column ... new_value subttitle
定义了 ttitle
指令中引用的 subtitle
。不是说不叫代入变量,这里没有&
。如文档中所述,您需要中断用于标题的列。如果您 仅 想在标题中查看值,而不是在报告本身中,您可以将 noprint
添加到该 column
指令中。