如何在Pervasive SQL语句中获取指定字符后的剩余子串
在Pervasive SQL中提取字符串“/”后的子串
要在Pervasive SQL里获取Auftrag字段中“/”字符之后的剩余部分,你可以结合CHARINDEX和SUBSTRING函数来实现——这比你之前尝试的硬编码起始位置的方法更通用(毕竟如果Auftrag里的前缀长度变化,硬写8就会失效)。
核心解决方案
直接用动态定位“/”的位置来截取子串:
SELECT * FROM "ParaListen" WHERE SUBSTRING(Auftrag, CHARINDEX('/', Auftrag) + 1) = 'PAOrtsA'
函数说明
CHARINDEX('/', Auftrag):这个函数会返回“/”在Auftrag字符串中的起始索引(Pervasive SQL中索引从1开始计数)。比如对于值'235829/PAOrtsA',它会返回7。SUBSTRING(Auftrag, [起始位置]):当省略第三个长度参数时,SUBSTRING会从指定的起始位置开始,截取到字符串的末尾。这里我们把起始位置设为CHARINDEX(...) + 1,就是为了跳过“/”本身,直接取后面的内容。
处理边界情况
如果你的Auftrag字段中可能存在不包含“/”的记录,为了避免CHARINDEX返回0导致SUBSTRING报错,可以添加一个判断条件过滤掉这些记录:
SELECT * FROM "ParaListen" WHERE CHARINDEX('/', Auftrag) > 0 AND SUBSTRING(Auftrag, CHARINDEX('/', Auftrag) + 1) = 'PAOrtsA'
这样就能精准匹配所有Auftrag字段中“/”后部分为'PAOrtsA'的记录了。
内容的提问来源于stack exchange,提问作者Max Lindner
相关产品推荐
相关产品推荐

