【发布时间】:2014-05-20 17:33:39
【问题描述】:
我正在使用 Oracle SQL Developer 4.0.1.14 并试图找出一些变量绑定。我从以下查询开始:
SELECT *
FROM Ships
WHERE UniqueId = 17;
和
SELECT *
FROM Ships
WHERE UniqueId = :variable;
这两个都成功执行。当您运行第二个时,Oracle SQL Developer 提示您输入一个值,我输入 17。但是,当我尝试对字符串参数执行相同操作时,我不成功(查询返回 0 行)。例如:
SELECT *
FROM Ships
WHERE ShipName = 'Atlantic Boat';
和
SELECT *
FROM Ships
WHERE ShipName LIKE :variable;
只有第一个查询成功。我已经尝试进入弹出窗口
大西洋船
“大西洋之船”
“大西洋之船”
和其他变体没有成功。我怎样才能做到这一点?
编辑:我尝试过使用 like 语句并取得了一些成功。
SELECT *
FROM Ships
WHERE ShipName LIKE '%Atlantic Boat%';
和
SELECT *
FROM Ships
WHERE ShipName LIKE :variable;
两者都有效。第二个需要 %Atlantic Boat%,没有字符串引号 ('')。但是,即使有 % 的变化,我仍然无法让 = one 工作。
【问题讨论】:
-
既然返回0行,你确定
ShipName列中有这个值Atlantic Boat吗? -
对不起,如果我不清楚。第三个查询 (ShipName = 'Atlantic Boat') 返回我正在寻找的行,所以我确定它存在。只有第 4 个查询返回 0 行
-
这在 4.0.1.14 和 4.0.2.15 中对我来说很好用。在绑定窗口中输入值时不应有任何引号,但您显示的第一个值应该有效。 建议这不是您输入的内容;要么情况略有不同,要么你有一个前导或尾随空格,或者类似的东西。或者,更有可能的是,您的字段被声明为
char而不是varchar2... -
@AlexPoole 该列确实被声明为 CHAR(20 CHAR) 而不是 VARCHAR2。您能解释一下为什么会导致上述问题吗?
标签: sql string oracle variables binding