You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在DB2 SQL中如何提取字符串空格分隔后的最后一个字符

你现有写法的逻辑存在问题:RIGHT(TRIM(value), 1)是直接取修剪后字符串的最后一位字符,不会校验该字符是否为最后一个空格后的独立单个字符,针对第一个样本MPP ref会返回字符f,和你预期的空值结果不符。

正确实现需要先提取最后一个空格后的所有内容,再判断其长度是否为1,匹配时返回对应字符,否则返回空值,不同数据库的实现写法参考如下:

MySQL 写法

SELECT 
  IF(
    LENGTH(SUBSTRING_INDEX(TRIM(value), ' ', -1)) = 1,
    SUBSTRING_INDEX(TRIM(value), ' ', -1),
    ''
  ) AS Substr
FROM MyTable;

SQL Server 写法

SELECT 
  CASE 
    WHEN LEN(RIGHT(TRIM(value), CHARINDEX(' ', REVERSE(TRIM(value))) - 1)) = 1 
    THEN RIGHT(TRIM(value), CHARINDEX(' ', REVERSE(TRIM(value))) - 1)
    ELSE ''
  END AS Substr
FROM MyTable;

PostgreSQL 写法

SELECT 
  CASE 
    WHEN LENGTH(SPLIT_PART(TRIM(value), ' ', ARRAY_LENGTH(STRING_TO_ARRAY(TRIM(value), ' '), 1))) = 1
    THEN SPLIT_PART(TRIM(value), ' ', ARRAY_LENGTH(STRING_TO_ARRAY(TRIM(value), ' '), 1))
    ELSE ''
  END AS Substr
FROM MyTable;

内容的提问来源于stack exchange,提问作者user15973370

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:00:04