修剪String的一部分

Loo*_*ers 2 sql t-sql sql-server sql-server-2016

先感谢您.

我有一张长柱的表.

我只需要从列中获取名称.

这是列名:

QSTY-IOM-HFVNBJGYG | Mobile #: 9876541323 | CUSTOMER NAME: MNOP UNIPOUYTREA POIUY | INVOICE DATE:02/28/18 | EMP#: 101466 | EMPLOYEE NAME: ANGELINA CASIANO
Run Code Online (Sandbox Code Playgroud)

我只需要从此列中获取客户名称.我尝试了Charindex并且它正在显示错误消息

传递给LEFT或SUBSTRING函数的长度参数无效.

输出:

MNOP UNIPOUYTREA POIUY
Run Code Online (Sandbox Code Playgroud)

Zoh*_*led 6

由于您使用的是SQL Server 2016,因此可以使用它的内置STRING_SPLIT方法将字符串转换为表格.然后你要做的就是从开头的表中选择值CUSTOMER NAME:,如下所示:

DECLARE @s varchar(300) = 'QSTY-IOM-HFVNBJGYG | Mobile #: 9876541323 | CUSTOMER NAME: MNOP UNIPOUYTREA POIUY | INVOICE DATE:02/28/18 | EMP#: 101466 | EMPLOYEE NAME: ANGELINA CASIANO'

SELECT [value]
FROM STRING_SPLIT(@s, '|')
WHERE LTRIM([value]) LIKE 'CUSTOMER NAME:%'
Run Code Online (Sandbox Code Playgroud)

但是,您应该阅读在数据库列中存储分隔列表真的那么糟糕吗?并尽可能规范化您的数据库.