网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月21日漏签0天
postgresql吧 关注:1,006贴子:1,682
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 7回复贴,共1页
<<返回postgresql吧
>0< 加载中...

求助SPLIT_PART函数问题

  • 只看楼主
  • 收藏

  • 回复
  • ximian88
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
当没找到指定的分隔符时,这个函数的返回值是啥?
CREATE OR REPLACE PROCEDURE SP_HW_INS_TBL_VDUVMINFO_XIM
(
PI_RETURNCODE OUT INTEGER
)
AS
BEGIN
PI_RETURNCODE := 0;
IF SPLIT_PART('abcdef', '1', 1) IS NULL THEN
PI_RETURNCODE := 1;
END IF;
IF SPLIT_PART('abcdef', '1', 1) = '' THEN
PI_RETURNCODE := 2;
END IF;
END SP_HW_INS_TBL_VDUVMINFO_XIM;
/
CALL SP_HW_INS_TBL_VDUVMINFO_XIM(:PI_RETURNCODE);
/
结果:
pi_returncode
---------------
0
(1 row)
既不是NULL也不是''?还是我的判断语句有问题?


  • ximian88
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
求助啊,拜谢啦~~


2025-08-21 00:02:19
广告
不感兴趣
开通SVIP免广告
  • ximian88
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
额,搞错了,实际是想问SPLIT_PART('abcdef', '1', 2)
的结果。下面这个存储过程结果还是0,说明函数返回值不是空?
CREATE OR REPLACE PROCEDURE SP_HW_INS_TBL_VDUVMINFO_XIM
(
PI_RETURNCODE OUT INTEGER
)
AS
BEGIN
PI_RETURNCODE := 0;
IF SPLIT_PART('abcdef', '1', 2) IS NULL THEN
PI_RETURNCODE := 1;
END IF;
IF SPLIT_PART('abcdef', '1', 2) = '' THEN
PI_RETURNCODE := 2;
END IF;
END SP_HW_INS_TBL_VDUVMINFO_XIM;
/
CALL SP_HW_INS_TBL_VDUVMINFO_XIM(:PI_RETURNCODE);
/
pi_returncode
---------------
0
(1 row)


  • ximian88
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
select '>' || SPLIT_PART('abcdef', '1', 2) || '<';
?column?
----------
><
(1 row)
这tm不是空字符串是个啥...


  • ximian88
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
但是跑了下面这个存储过程,结果却是1,说明还真不是空串了??
CREATE OR REPLACE PROCEDURE SP_HW_INS_TBL_VDUVMINFO_XIM
(
PI_RETURNCODE OUT INTEGER
)
AS
STR VARCHAR2(32) := '';
BEGIN
PI_RETURNCODE := 0;
IF STR = '' OR STR IS NULL THEN
PI_RETURNCODE := 1;
END IF;
STR := SPLIT_PART('abcdef', '1', 2);
IF STR = '' OR STR IS NULL THEN
PI_RETURNCODE := 2;
END IF;
END SP_HW_INS_TBL_VDUVMINFO_XIM;
/
CALL SP_HW_INS_TBL_VDUVMINFO_XIM();
/
---------------
1
(1 row)


  • ximian88
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
唉,心疼没人回复,大神都不上贴吧?
找到方法了,有同样疑问的小伙伴可以试试:
postgreSQL函数返回值是空的时候,不好用''或NULL表示,这时可以将函数返回值转换为ASCII,然后判断是否为0:
IF ASCII(SPLIT_PART('abcdef', '1', 2)) <> 0 THEN ...


  • wwooha
  • 小学1级
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
split_part ( string text, delimiter text, n integer ) → text
在delimiter出现时拆分string,并且返回第n个字段(从一计数)。
split_part('abc~@~def~@~ghi', '~@~', 2) → def
参考:
https://www.rockdata.net/zh-cn/docs/12/functions-string.html#FUNCTIONS-STRING-OTHER


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 7回复贴,共1页
<<返回postgresql吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示