首页 > 解决方案 > 即使使用 SUBSTRING 和 CHARINDEX 不存在特殊字符,也返回列值

问题描述

我正在使用 SQL 并尝试在特殊字符(如<.

我用过这个 SQL:

SUBSTRING(ACTIVITY.Name, 0, CHARINDEX('<', ACTIVITY.Name, 2)) AS ActivityIdentifier

当列中有 a 时,它工作得非常好<,但是当一个不存在时,我没有得到任何结果。即使字符不存在,我也需要能够返回列值。

我查看了RTRIM,LEFTLEN函数,但由于我的Activity Name长度可能不同,它们似乎不合适。

我会很感激任何建议。

标签: sqlsql-server

解决方案


我认为最简单的解决方法是将 a 附加'<'到字符串:

SUBSTRING(ACTIVITY.Name, 1, CHARINDEX('<', ACTIVITY.Name + '<', 2)) as ActivityIdentifier

如果你不想要'<'结果,那么:

SUBSTRING(ACTIVITY.Name, 1, CHARINDEX('<', ACTIVITY.Name + '<', 2) - 1) as ActivityIdentifier

推荐阅读