我如何只需要输入一次数据?
How do I only have to input data once?
我目前正在使用 regexp_subtr 函数获取一串数据(用户输入)并将其转换为列表。有什么办法可以让我不必输入两次数据。这是我目前拥有的:
select regexp_substr((WITH X AS (SELECT ('&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level) "Employee"
from dual
connect by regexp_substr ((WITH X AS (SELECT ('&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level)
is not null;
是的,你可以像这样清理它:
WITH X AS
(SELECT REPLACE('&EmployeeID',' ',',') a FROM DUAL)
select regexp_substr(X.a,'[^,]+', 1, level) "Employee"
from X
connect by regexp_substr(X.a,'[^,]+', 1, level) is not null;
将 xmltable 与 tokenize
一起使用:
select *
from xmltable('tokenize(replace(.," ",","),",")'
passing '&EmployeeID'
columns s varchar2(100) path '.');
DBFiddle: https://dbfiddle.uk/?rdbms=oracle_21&fiddle=19ab9c444502f6e1fd3bdaa44e04ab27
您的客户端似乎是 sqlplus,其中和号 ('&') 指示客户端提示用户输入。您可以通过在变量名前添加第二个符号来避免对同一个变量 re-prompted。
select regexp_substr((WITH X AS (SELECT ('&&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level) "Employee"
from dual
connect by regexp_substr ((WITH X AS (SELECT ('&&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level)
is not null;
我目前正在使用 regexp_subtr 函数获取一串数据(用户输入)并将其转换为列表。有什么办法可以让我不必输入两次数据。这是我目前拥有的:
select regexp_substr((WITH X AS (SELECT ('&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level) "Employee"
from dual
connect by regexp_substr ((WITH X AS (SELECT ('&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level)
is not null;
是的,你可以像这样清理它:
WITH X AS
(SELECT REPLACE('&EmployeeID',' ',',') a FROM DUAL)
select regexp_substr(X.a,'[^,]+', 1, level) "Employee"
from X
connect by regexp_substr(X.a,'[^,]+', 1, level) is not null;
将 xmltable 与 tokenize
一起使用:
select *
from xmltable('tokenize(replace(.," ",","),",")'
passing '&EmployeeID'
columns s varchar2(100) path '.');
DBFiddle: https://dbfiddle.uk/?rdbms=oracle_21&fiddle=19ab9c444502f6e1fd3bdaa44e04ab27
您的客户端似乎是 sqlplus,其中和号 ('&') 指示客户端提示用户输入。您可以通过在变量名前添加第二个符号来避免对同一个变量 re-prompted。
select regexp_substr((WITH X AS (SELECT ('&&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level) "Employee"
from dual
connect by regexp_substr ((WITH X AS (SELECT ('&&EmployeeID') a FROM DUAL) SELECT REPLACE(X.a,' ',',') FROM X),'[^,]+', 1, level)
is not null;