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