PL/SQL 将字符串转换为布尔值

Posted

技术标签:

【中文标题】PL/SQL 将字符串转换为布尔值【英文标题】:PL/SQL Convert String To Boolean 【发布时间】:2012-06-19 09:04:37 【问题描述】:

我有一个 EXT JS 页面,它发送带有一些值的表单。这些值都以字符串形式发送,一些以布尔值形式发送。它正在调用一个参数都是 varchar 的 PL/SQL 过程。由于某种原因,在提交表单时,即使某些值作为布尔值发送,程序也无法将它们作为布尔值接收。从过程中接收到的所有值都是 varchar;并且必须否则它会崩溃。

所以我将一个布尔值从表单发送到程序。当它进入程序时,它现在是一个 varchar。如何将其转换回布尔值?

感谢任何帮助,我觉得我在这里做错了。我不明白它为什么将其作为 varchar 接收。

【问题讨论】:

我不明白:什么 将参数从 Boolean 转换为 varchar?可以发一些代码吗? 不是我做的,我相信它在后台。我正在发送一个布尔值,以某种方式在发送时将其转换为 varchar。我找到了一个解决方法:在过程中我只会说如果 value = "true" 然后将布尔值设置为 true。我想我会采用这种方法,因为我认为我无法控制发生的转换,而且我认为不可能将 varchar 转换为布尔值。无论如何,谢谢托尼。 【参考方案1】:

您说得对,Oracle 没有内置的字符串到布尔函数,但您可以轻松地自己创建一个:

create or replace function to_boolean
  ( p_string varchar2
  ) return boolean
is
begin
  return
    case upper(p_string) 
      when 'TRUE' then true
      when 'FALSE' then false
      else null
      end;
end;

(“else null”是多余的,但我把它放在那里是为了提醒您,如果 upper(p_string) 不是 'TRUE' 或 'FALSE' 则该函数将返回 null)。

您当然可以增强函数以将其他字符串值视为真或假,例如“T”、“是”、...

【讨论】:

以上是关于PL/SQL 将字符串转换为布尔值的主要内容,如果未能解决你的问题,请参考以下文章

使用 Freemarker 将字符串转换为布尔值

如何使用javascript将字符串数组转换为布尔值? [复制]

TypeScript:将布尔值转换为字符串值

将字符串转换为布尔值[重复]

Ruby:如何将字符串转换为布尔值

Python:将字符串列表转换为布尔值,其中布尔值以字符串形式存在[重复]