首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Informix中保留函数参数中的空格?

如何在Informix中保留函数参数中的空格?
EN

Stack Overflow用户
提问于 2017-01-04 20:49:19
回答 1查看 168关注 0票数 1

我正在尝试为Informix11.5创建一个InStr函数的版本。下面是代码:

代码语言:javascript
运行
复制
CREATE FUNCTION MY_INSTR(txt VARCHAR(255), term VARCHAR(255))
    RETURNING VARCHAR(255);
  DEFINE i INTEGER;
  DEFINE len INTEGER;
  DEFINE lenterm INTEGER;

  LET i = 1;
  LET lenterm = LENGTH(term);
  LET len = LENGTH(txt) - lenterm;

  WHILE ( i <= len ) LOOP
    IF SUBSTR( txt, i, lenterm ) = term THEN
      RETURN i;
    END IF
    LET i = i + 1;
  END LOOP

  RETURN 0;
END FUNCTION;

我将使用此函数在具有全名的列中获取用户的名称,如下所示:

代码语言:javascript
运行
复制
SELECT SUBSTR(name, 1, MY_INSTR(name, " ")) AS firstname
  FROM users

我需要传递值" "作为术语,但当我这样做时,lenterm等于0。

在将空白传递给Informix中的函数时,是否存在保留空白的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-05 00:20:43

对于VARCHAR类型,OCTET_LENGTH函数应该返回包含尾随空格的长度。来自手册

OCTET_LENGTH返回字符列中的字节数,包括任何尾随空格。

我没有要测试的Informix11.50实例,但在Informix12.10(FC6DE)中尝试了以下操作:

代码语言:javascript
运行
复制
CREATE FUNCTION f_my_t(param1 VARCHAR(10))
RETURNING INTEGER AS param1_length;
  DEFINE l_result INTEGER;
  LET l_result = OCTET_LENGTH(param1);
  RETURN l_result;
END FUNCTION;

EXECUTE FUNCTION f_my_t (' ');

我得到的结果:

代码语言:javascript
运行
复制
Database selected.
Routine created.

param1_length
            1
1 row(s) retrieved.

Database closed.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41472986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档