Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用PL/SQL中的标准长度函数的情况下查找输入字符串的长度?_Sql_Plsql - Fatal编程技术网

如何在不使用PL/SQL中的标准长度函数的情况下查找输入字符串的长度?

如何在不使用PL/SQL中的标准长度函数的情况下查找输入字符串的长度?,sql,plsql,Sql,Plsql,有没有一种方法可以通过编写PL/SQL函数而不使用length()来了解字符串长度?请解释为什么标准函数不符合您的目的?这是在一次采访中提出的。探索是否有办法..@LukStorms,这是我想在这里避免的标准函数..好吧,我觉得奇怪的是,你第一次要求替换strlen Pro*C函数。创建一个循环并在递增计数器的同时对每个字符进行子串。返回计数器作为函数的结果。但要注意字符长度和字节长度。 CREATE OR REPLACE FUNCTION mylength (p_text IN VARCHAR

有没有一种方法可以通过编写PL/SQL函数而不使用length()来了解字符串长度?

请解释为什么标准函数不符合您的目的?这是在一次采访中提出的。探索是否有办法..@LukStorms,这是我想在这里避免的标准函数..好吧,我觉得奇怪的是,你第一次要求替换strlen Pro*C函数。创建一个循环并在递增计数器的同时对每个字符进行子串。返回计数器作为函数的结果。但要注意字符长度和字节长度。
CREATE OR REPLACE FUNCTION mylength (p_text IN VARCHAR2)
   RETURN INTEGER
AS
   l_ret   INTEGER := 0;
BEGIN
   WHILE SUBSTR (p_text, l_ret + 1, 1) IS NOT NULL
   LOOP
      l_ret   := l_ret + 1;
   END LOOP;

   RETURN l_ret;
END mylength;

BEGIN
   DBMS_OUTPUT.put_line ('ABC: ' || mylength ('ABC'));
   DBMS_OUTPUT.put_line ('ABCDEFG: ' || mylength ('ABCDEFG'));
   DBMS_OUTPUT.put_line ('empty: ' || mylength (''));
   DBMS_OUTPUT.put_line ('null: ' || mylength (NULL));
END;

ABC: 3
ABCDEFG: 7
empty: 0
null: 0