sql - 使用 SUBSTRING 和 CHARINDEX 提取部分名称
问题描述
我想提取名称的一部分(最后一个“_”之后的所有内容):
BL_BU_TS_UI_UX -> UX
BL_BU_TS_AZ_Mobile -> Mobile
BL_BU_TS_UI_Projects -> Projects
我使用以下代码: SUBSTRING([BL_or_CL_Sponsor], CHARINDEX('_', [BL_or_CL_Sponsor], 1), 30) 它返回以下数据:
_UI_UX
_AZ_Mobile
_UI_Projects
我正在考虑使用 REVERSE,但它说error converting nvarchar to int
. 请你帮助我好吗?
谢谢,BR。
解决方案
不是性能最高的选项,但您可以在此处使用反向技巧:
SELECT
BL_or_CL_Sponsor,
REVERSE(LEFT(REVERSE(BL_or_CL_Sponsor),
CHARINDEX('_', REVERSE(BL_or_CL_Sponsor)) - 1)) AS prefix
FROM yourTable;
演示
要了解这个技巧是如何工作的,请考虑输入步骤的细分BL_BU_TS_UI_UX
:
BL_BU_TS_UI_UX
XU_IU_ST_UB_LB (reverse string)
XU (take left until reaching, but including, first underscore)
UX (reverse this substring to obtain the prefix)
推荐阅读
- java - 有没有办法确保我的数组不返回空值,或者修复我的数组以使其不返回?
- node.js - 如何隐藏<返回
我已经转换了一个 P 标记以将其发送到我的数据库,现在从我的数据库中检索它,但节点或 ejs 没有将 p 标记呈现为 ap 或 html 标记。
我正在尝试将ckeditor作为格式化工具将textarea输出为html,但它将标签转换为<>,当我现在在nodejs中使用php时它工作得很好,它不会将它们转换回<><%= rs.comment %> //输出变量包
- c++ - 桌面上方的 X11/GLX 窗口
- java - 未选中调用 submitList(List
) 作为原始类型 ListAdapter 的成员 - java - 如何使用 xpath 从下面的 html 标签中提取文本?
- c - 缓冲区大小与哈希计算速度直接相关
- python - time.time() 在 Cython 中无法在预定时间内运行 while 循环
- c# - 在 C# 中执行
- assembly - MARS 用户输入:如何从用户输入中回显星号?
- python - pyaudio constructor blocks indefinitely