Oracle SQL Developer String Variable Binding

I am using Oracle SQL Developer 4.0.1.14 and trying to figure out some variable bindings. I started with the queries below:

SELECT *
FROM Ships
WHERE UniqueId = 17;

and

SELECT *
FROM Ships
WHERE UniqueId = :variable;

Both of them are successful. When you start the second, Oracle SQL Developer offers you the value from which I enter 17. However, when I try to do the same with the string parameter, I am unsuccessful (Query returns 0 rows). For instance:

SELECT *
FROM Ships
WHERE ShipName = 'Atlantic Boat';

and

SELECT *
FROM Ships
WHERE ShipName LIKE :variable;

Only the first request is executed. I tried to pop up

Atlantic boat

'Atlantic boat'

"Atlantic boat"

and other options without success. How can I do this job?

EDIT: I tried using a similar expression and found some success.

SELECT *
FROM Ships
WHERE ShipName LIKE '%Atlantic Boat%';

and

SELECT *
FROM Ships
WHERE ShipName LIKE :variable;

. % Atlantic Boat%, (''). = one , % .

+4
2

varchar2, :

create table ships (uniqueid number, shipname varchar2(20));
insert into ships values (17, 'Atlantic Boat');

SELECT *
FROM Ships
WHERE ShipName = 'Atlantic Boat';

  UNIQUEID SHIPNAME                     
---------- ------------------------------
        17 Atlantic Boat                  

var variable varchar2(20);

anonymous block completed

exec :variable := 'Atlantic Boat';

SELECT *
FROM Ships
WHERE ShipName LIKE :variable;

  UNIQUEID SHIPNAME                     
---------- ------------------------------
        17 Atlantic Boat                  

char, , :

drop table ships;
create table ships (uniqueid number, shipname char(20));
insert into ships values (17, 'Atlantic Boat');

SELECT *
FROM Ships
WHERE ShipName = 'Atlantic Boat';

  UNIQUEID SHIPNAME                     
---------- ------------------------------
        17 Atlantic Boat                  


var variable varchar2(20);
exec :variable := 'Atlantic Boat';

anonymous block completed

SELECT *
FROM Ships
WHERE ShipName LIKE :variable;

no rows selected

, bind ​​ char(20).

char , 'Atlantic Boat ', 7 . , WHERE ShipName = 'Atlantic Boat', , , . , , - .

LIKE 'Atlantic Boat%' Atlantic Boat% , , 'Atlantic Boat ' Atlantic Boat%.

- char ( , char, ). - , varchar2.

, bind :

SELECT *
FROM Ships
WHERE ShipName LIKE cast(:variable as char(20));

  UNIQUEID SHIPNAME                     
---------- ------------------------------
        17 Atlantic Boat                  
+4

SQL Developer 4.0.1.14, , Atlantic Boat:

enter image description here

@Alex Poole , , ShipName varchar2. desbribe Ships, , :

enter image description here


SQL. , like 'Atlantic Boat' .

+1

Source: https://habr.com/ru/post/1541318/


All Articles