2017-11-27 14 views
0

匿名ブロックを使用してユーザーに「Hello World」と入力し、コンソール出力にHello Worldを入力させようとしています。空白でのpl/sql代入変数の分割

DECLARE 
user_text VARCHAR2(20) := &userInput; 
start_position VARCHAR2(20) := INSTR(user_text, ' '); 
extracted_string VARCHAR2(20) := SUBSTR(user_text, start_position); 

BEGIN 

DBMS_OUTPUT.PUT_LINE(TRIM(extracted_string)); 

END; 

上記のコードは「World」のみを出力します。

答えて

2

「World」は、コード化されたものとまったく同じですので、「World」のみを出力します。あなたはまた、最初の単語をしたい場合は

は、あなたがこのような何かを追加する必要があります。

DECLARE 
    -- rest of your code 
    first_word VARCHAR2(20) := SUBSTR(user_text, 0, start_position); 
BEGIN 
    DBMS_OUTPUT.PUT_LINE(TRIM(first_word)); 
    -- rest of your code 
END; 
1

そのないあなたが達成しようとしているものをちょうどしたい場合は入力Hello Worldため、World Helloが表示されるべきであることは明らかで、スペースの前に文字列の開始語を次のように入力する必要があります。

DECLARE 
user_text VARCHAR2(20) := 'Hello World'; 
start_position VARCHAR2(20) := INSTR(user_text, ' '); 
start_word_of_string varchar(20) := SUBSTR(user_text,0,start_position); 
extracted_string VARCHAR2(20) := SUBSTR(user_text, start_position); 

BEGIN 

DBMS_OUTPUT.PUT_LINE(extracted_string || ' ' || start_word_of_string); 

END; 

結果:

World Hello 

DEMO

関連する問題